cdt docs update
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
---
|
||||
content_title: Installation
|
||||
---
|
||||
|
||||
See README of https://github.com/AntelopeIO/cdt for instructions on how to build and install CDT.
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
content_title: cdt-abidiff tool
|
||||
---
|
||||
|
||||
The cdt-abidiff tool is used to diff two ABI files to flag and output differences.
|
||||
To report differences with ```cdt-abidiff```, you only need to pass the two ABI file names as command line arguments.
|
||||
|
||||
Example:
|
||||
```bash
|
||||
$ cdt-abidiff hello.abi old_hello.abi
|
||||
```
|
||||
|
||||
This will generate dump the report output to the console.
|
||||
```
|
||||
OVERVIEW: cdt-abidiff
|
||||
USAGE: cdt-abidiff [options] <input file1> ... <input file2> ...
|
||||
|
||||
OPTIONS:
|
||||
|
||||
Generic Options:
|
||||
|
||||
-help - Display available options (-help-hidden for more)
|
||||
-help-list - Display list of available options (-help-list-hidden for more)
|
||||
-version - Display the version of this program
|
||||
```
|
||||
@@ -1,75 +0,0 @@
|
||||
---
|
||||
content_title: cdt-cc tool
|
||||
---
|
||||
|
||||
To manually compile the source code, use `cdt-cc` and `cdt-ld` as if it were __clang__ and __lld__. All the includes and options specific to Antelope and CDT are baked in.
|
||||
|
||||
```
|
||||
USAGE: cdt-cc [options] <input file> ...
|
||||
|
||||
OPTIONS:
|
||||
|
||||
Generic Options:
|
||||
|
||||
-help - Display available options (-help-hidden for more)
|
||||
-help-list - Display list of available options (-help-list-hidden for more)
|
||||
-version - Display the version of this program
|
||||
|
||||
compiler options:
|
||||
|
||||
-C - Include comments in preprocessed output
|
||||
-CC - Include comments from within macros in preprocessed output
|
||||
-D=<string> - Define <macro> to <value> (or 1 if <value> omitted)
|
||||
-E - Only run the preprocessor
|
||||
-I=<string> - Add directory to include search path
|
||||
-L=<string> - Add directory to library search path
|
||||
-MD - Write depfile containing user and system headers
|
||||
-MF=<string> - Write depfile output
|
||||
-MMD - Write depfile containing user
|
||||
-MT=<string> - Specify name of main file output in depfile
|
||||
-O=<string> - Optimization level s, 0-3
|
||||
-R=<string> - Add a resource path for inclusion
|
||||
-S - Only run preprocess and compilation steps
|
||||
-U=<string> - Undefine macro <macro>
|
||||
-W=<string> - Enable the specified warning
|
||||
-abigen - Generate ABI
|
||||
-abigen_output=<string> - ABIGEN output
|
||||
-c - Only run preprocess, compile, and assemble steps
|
||||
-contract=<string> - Contract name
|
||||
-dD - Print macro definitions in -E mode in addition to normal output
|
||||
-dI - Print include directives in -E mode in addition to normal output
|
||||
-dM - Print macro definitions in -E mode instead to normal output
|
||||
-emit-ast - Emit Clang AST files for source inputs
|
||||
-emit-llvm - Use the LLVM representation for assembler and object files
|
||||
-fasm - Assemble file for x86-64
|
||||
-fcolor-diagnostics - Use colors in diagnostics
|
||||
-finline-functions - Inline suitable functions
|
||||
-finline-hint-functions - Inline functions which are (explicitly or implicitly) marked inline
|
||||
-fmerge-all-constants - Allow merging of constants
|
||||
-fnative - Compile and link for x86-64
|
||||
-fno-cfl-aa - Disable CFL Alias Analysis
|
||||
-fno-elide-constructors - Disable C++ copy constructor elision
|
||||
-fno-lto - Disable LTO
|
||||
-fno-post-pass - Don't run post processing pass
|
||||
-fno-stack-first - Don't set the stack first in memory
|
||||
-fquery - Produce binaries for wasmql
|
||||
-fquery-client - Produce binaries for wasmql
|
||||
-fquery-server - Produce binaries for wasmql
|
||||
-fstack-protector - Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
-fstack-protector-all - Force the usage of stack protectors for all functions
|
||||
-fstack-protector-strong - Use a strong heuristic to apply stack protectors to functions
|
||||
-fstrict-enums - Enable optimizations based on the strict definition of an enum's value range
|
||||
-fstrict-return - Always treat control flow paths that fall off the end of a non-void function as unreachable
|
||||
-fstrict-vtable-pointers - Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
-fuse-main - Use main as entry
|
||||
-include=<string> - Include file before parsing
|
||||
-isystem=<string> - Add directory to SYSTEM include search path
|
||||
-l=<string> - Root name of library to link
|
||||
-lto-opt=<string> - LTO Optimization level (O0-O3)
|
||||
-o=<string> - Write output to <file>
|
||||
-stack-size=<int> - Specifies the maximum stack size for the contract. Defaults to 8192 bytes.
|
||||
-sysroot=<string> - Set the system root directory
|
||||
-v - Show commands to run and use verbose output
|
||||
-w - Suppress all warnings
|
||||
--warn-action-read-only - Issue a warning if a read-only action uses a write API and continue compilation
|
||||
```
|
||||
@@ -1,80 +0,0 @@
|
||||
---
|
||||
content_title: cdt-cpp tool
|
||||
---
|
||||
|
||||
To manually compile the source code, use `cdt-cpp` and `cdt-ld` as if it were __clang__ and __lld__. All the includes and options specific to Antelope and CDT are baked in.
|
||||
|
||||
```
|
||||
USAGE: cdt-cpp [options] <input file> ...
|
||||
|
||||
OPTIONS:
|
||||
|
||||
Generic Options:
|
||||
|
||||
-help - Display available options (-help-hidden for more)
|
||||
-help-list - Display list of available options (-help-list-hidden for more)
|
||||
-version - Display the version of this program
|
||||
|
||||
compiler options:
|
||||
|
||||
-C - Include comments in preprocessed output
|
||||
-CC - Include comments from within macros in preprocessed output
|
||||
-D=<string> - Define <macro> to <value> (or 1 if <value> omitted)
|
||||
-E - Only run the preprocessor
|
||||
-I=<string> - Add directory to include search path
|
||||
-L=<string> - Add directory to library search path
|
||||
-MD - Write depfile containing user and system headers
|
||||
-MF=<string> - Write depfile output
|
||||
-MMD - Write depfile containing user
|
||||
-MT=<string> - Specify name of main file output in depfile
|
||||
-O=<string> - Optimization level s, 0-3
|
||||
-R=<string> - Add a resource path for inclusion
|
||||
-S - Only run preprocess and compilation steps
|
||||
-U=<string> - Undefine macro <macro>
|
||||
-W=<string> - Enable the specified warning
|
||||
-abigen - Generate ABI
|
||||
-abigen_output=<string> - ABIGEN output
|
||||
-c - Only run preprocess, compile, and assemble steps
|
||||
-contract=<string> - Contract name
|
||||
-dD - Print macro definitions in -E mode in addition to normal output
|
||||
-dI - Print include directives in -E mode in addition to normal output
|
||||
-dM - Print macro definitions in -E mode instead to normal output
|
||||
-emit-ast - Emit Clang AST files for source inputs
|
||||
-emit-llvm - Use the LLVM representation for assembler and object files
|
||||
-faligned-allocation - Enable C++17 aligned allocation functions
|
||||
-fasm - Assemble file for x86-64
|
||||
-fcolor-diagnostics - Use colors in diagnostics
|
||||
-fcoroutine-ts - Enable support for the C++ Coroutines TS
|
||||
-finline-functions - Inline suitable functions
|
||||
-finline-hint-functions - Inline functions which are (explicitly or implicitly) marked inline
|
||||
-fmerge-all-constants - Allow merging of constants
|
||||
-fnative - Compile and link for x86-64
|
||||
-fno-cfl-aa - Disable CFL Alias Analysis
|
||||
-fno-elide-constructors - Disable C++ copy constructor elision
|
||||
-fno-lto - Disable LTO
|
||||
-fno-post-pass - Don't run post processing pass
|
||||
-fno-stack-first - Don't set the stack first in memory
|
||||
-stack-size - Specifies the maximum stack size for the contract
|
||||
-fstack-protector - Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
-fstack-protector-all - Force the usage of stack protectors for all functions
|
||||
-fstack-protector-strong - Use a strong heuristic to apply stack protectors to functions
|
||||
-fstrict-enums - Enable optimizations based on the strict definition of an enum's value range
|
||||
-fstrict-return - Always treat control flow paths that fall off the end of a non-void function as unreachable
|
||||
-fstrict-vtable-pointers - Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
-fuse-main - Use main as entry
|
||||
-include=<string> - Include file before parsing
|
||||
-isystem=<string> - Add directory to SYSTEM include search path
|
||||
-l=<string> - Root name of library to link
|
||||
-lto-opt=<string> - LTO Optimization level (O0-O3)
|
||||
-o=<string> - Write output to <file>
|
||||
-std=<string> - Language standard to compile for
|
||||
-sysroot=<string> - Set the system root directory
|
||||
-v - Show commands to run and use verbose output
|
||||
-w - Suppress all warnings
|
||||
-no-missing-ricardian-clause - Defaults to false, disables warnings for missing Ricardian clauses
|
||||
--warn-action-read-only - Issue a warning if a read-only action uses a write API and continue compilation
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
* `-no-missing-ricardian-clause`: Defaults to false, if enabled, it suppresses warnings for missing Ricardian clauses on contracts and contract actions. That includes the warnings generated when there is no independent Ricardian clause file.
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
content_title: cdt-init tool
|
||||
---
|
||||
|
||||
This tool is used to generate a skeleton smart contract and directory structure.
|
||||
To generate a new smart contract project you can either generate a "bare" project (no CMake) or the default is to generate a CMake project.
|
||||
|
||||
Example:
|
||||
```bash
|
||||
$ cdt-init --path=\destination\path\where\to\generate\project\ --project=hello_contract_folder
|
||||
```
|
||||
|
||||
This will generate a project folder `hello_contract_folder` in the path `\destination\path\where\to\generate\project\` containing the skeleton smart contract and directory structure.
|
||||
|
||||
```
|
||||
USAGE: cdt-init [options]
|
||||
|
||||
OPTIONS:
|
||||
|
||||
Generic Options:
|
||||
|
||||
-help - Display available options (-help-hidden for more)
|
||||
-help-list - Display list of available options (-help-list-hidden for more)
|
||||
-version - Display the version of this program
|
||||
|
||||
cdt-init:
|
||||
generates a smart contract project
|
||||
|
||||
-bare - produces only a skeleton smart contract without CMake support
|
||||
-path=<string> - directory to place the project
|
||||
-project=<string> - output project name
|
||||
```
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
content_title: cdt-ld tool
|
||||
---
|
||||
|
||||
The cdt-ld tool is a the custom web assembly linker for Antelope framework smart contracts.
|
||||
|
||||
|
||||
```
|
||||
USAGE: cdt-ld [options] <input file> ...
|
||||
|
||||
OPTIONS:
|
||||
|
||||
Generic Options:
|
||||
|
||||
-help - Display available options (-help-hidden for more)
|
||||
-help-list - Display list of available options (-help-list-hidden for more)
|
||||
-version - Display the version of this program
|
||||
|
||||
ld options:
|
||||
|
||||
-L=<string> - Add directory to library search path
|
||||
-fasm - Assemble file for x86-64
|
||||
-fnative - Compile and link for x86-64
|
||||
-fno-cfl-aa - Disable CFL Alias Analysis
|
||||
-fno-lto - Disable LTO
|
||||
-fno-post-pass - Don't run post processing pass
|
||||
-fno-stack-first - Don't set the stack first in memory
|
||||
-stack-size - Specifies the maximum stack size for the contract
|
||||
-fuse-main - Use main as entry
|
||||
-l=<string> - Root name of library to link
|
||||
-lto-opt=<string> - LTO Optimization level (O0-O3)
|
||||
-o=<string> - Write output to <file>
|
||||
```
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
content_title: EOSIO.CDT To CDT
|
||||
---
|
||||
|
||||
For this release all of the naming of namespaces and file paths will remain as `eosio`, so there is no need to migrate away from that with this release.
|
||||
|
||||
But there are a few differences.
|
||||
|
||||
1. The tool names have change prefix. I.e. tools like `eosio-cpp` are now `cdt-cpp`.
|
||||
2. The CMake toolchain file has changed its name from `EosioWasmToolchain.cmake` to `CDTWasmToolchain.cmake`.
|
||||
3. The library path for the CMake package has changed from `/usr/local/lib/cmake/eosio.cdt` to `/usr/local/lib/cmake/cdt` (or alternatively from `/usr/lib/cmake/eosio.cdt` to `/usr/lib/cmake/cdt` if installing from the Debian package). Additionally, the name to use with CMake `find_package` has similarly changed: use `find_package(cdt)` now instead of `find_package(eosio.cdt)`.
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
content_title: Return Values From Actions
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
An Antelope blockchain with the `ACTION_RETURN_VALUE` protocol feature activated enables you to return any value from any action. This new feature facilitates easier smart contract implementation debugging, and better messaging between a smart contract and its clients. From now on the clients of a smart contract are able to use the value returned by an action, no more string parsing on the client side and no more print statements in the smart contract implementation.
|
||||
|
||||
## Concept
|
||||
|
||||
When you implement an action within a smart contract use the `return` statement and pass any value to the action sender. The returned value can be of any C++ primitive type, any C++ standard library type, or any user defined type. The `Antelope` framework does all the work necessary to serialize the value returned and send it back to the client. On the client side you deserialize the received value and access it the same way you access any other function’s return value.
|
||||
|
||||
## Details
|
||||
|
||||
The following list provides important details for when you return a value from an action:
|
||||
|
||||
* As mentioned above, the `Antelope` framework does all the heavy lifting for the return value to convey it to the client. The `Antelope` framework defines and uses a new intrinsic, namely `set_action_return_value`. To learn more about `Antelope` returned values functionality, refer to its documentation and [implementation](https://github.com/AntelopeIO/cdt/blob/develop/libraries/native/intrinsics.cpp#L295).
|
||||
* The CPU time and memory limit of your contract (maximum size of wasm), not RAM or NET, defines the limits of the returned value..
|
||||
* The action receipt includes a hash of the serialized returned value.
|
||||
* The action trace includes the serialized returned value.
|
||||
* If the trace log is enabled, the state history trace logs also store the serialized returned value.
|
||||
* If the trace api plugin is enabled, the trace api trace logs also store the serialized returned value.
|
||||
* The returned value is available in the action trace. If the sender is another action, the action trace is not available to the sender action `code`. Therefore the returned value from an inline action can not be read by the action that sent the inline action.
|
||||
* Also inline actions do not execute synchronously. Inline actions execute at a later time. No return value is available to the sender at the time the inline action is sent.
|
||||
|
||||
## Examples
|
||||
|
||||
For a full working example of a smart contract action which returns a value, refer to the following resources:
|
||||
|
||||
* The [`hello`](https://github.com/AntelopeIO/cdt/blob/develop/examples/hello/src/hello.cpp#L14) smart contract example, see action `hello::checkwithrv`.
|
||||
* The [How-to return values from actions](../06_how-to-guides/60_how-to-return-values-from-actions.md).
|
||||
@@ -1,720 +0,0 @@
|
||||
---
|
||||
content_title: The eosio::binary_extension Type
|
||||
---
|
||||
|
||||
Let's fully explain what the `eosio::binary_extension` type is, what it does, and why we need it for contract upgrades in certain situations.
|
||||
|
||||
You can find the implementation of `eosio::binary_extension` within the CDT repository in the file: `libraries/eosiolib/core/eosio/binary_extension.hpp`.
|
||||
|
||||
Our primary concern when using this type is when we are adding a new field to a smart contract's data structure that is currently utilized in an `eosio::multi_index` type (AKA a _table_), or when adding a new parameter to an action declaration.
|
||||
|
||||
By wrapping the new field in an `eosio::binary_extension`, you are enabling your contract to be backwards compatible for future use. Note that this new field/parameter **MUST** be appended at the end of a data structure (this is due to implementation details in `eosio::multi_index`, which relies on the `boost::multi_index` type), or at the end of the parameter list in an action declaration.
|
||||
|
||||
If you don't wrap the new field in an `eosio::binary_extension`, the `eosio::multi_index` table will be reformatted in such a way that disallows reads to the former datum; or in an action's case, the function will be uncallable.
|
||||
|
||||
<hr>
|
||||
|
||||
But let's see how the `eosio::binary_extension` type works with a good example.
|
||||
|
||||
Take a moment to study this smart contract and its corresponding `.abi`.
|
||||
|
||||
This contract not only serves as a good example to the `eosio::binary_extension` type, but can also be used as a gateway for developing smart contracts on the eosio protocol.
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```c++
|
||||
#include <eosio/contract.hpp> // eosio::contract
|
||||
#include <eosio/binary_extension.hpp> // eosio::binary_extension
|
||||
#include <eosio/datastream.hpp> // eosio::datastream
|
||||
#include <eosio/name.hpp> // eosio::name
|
||||
#include <eosio/multi_index.hpp> // eosio::indexed_by, eosio::multi_index
|
||||
#include <eosio/print.hpp> // eosio::print_f
|
||||
|
||||
class [[eosio::contract]] binary_extension_contract : public eosio::contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
binary_extension_contract(eosio::name receiver, eosio::name code, eosio::datastream<const char*> ds)
|
||||
: contract{receiver, code, ds}, _table{receiver, receiver.value}
|
||||
{ }
|
||||
|
||||
[[eosio::action]] void regpkey (eosio::name primary_key); ///< Register primary key.
|
||||
[[eosio::action]] void printbyp(eosio::name primary_key); ///< Print by primary key.
|
||||
[[eosio::action]] void printbys(eosio::name secondary_key); ///< Print by secondary key.
|
||||
[[eosio::action]] void modifyp (eosio::name primary_key, eosio::name n); ///< Modify primary key by primary key.
|
||||
[[eosio::action]] void modifys (eosio::name primary_key, eosio::name n); ///< Modify secondary key by primary key.
|
||||
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
|
||||
using index1 = eosio::indexed_by<"index1"_n, eosio::const_mem_fun<structure, uint64_t, &structure::primary_key>>;
|
||||
using index2 = eosio::indexed_by<"index2"_n, eosio::const_mem_fun<structure, uint64_t, &structure::secondary_key>>;
|
||||
using table = eosio::multi_index<"table"_n, structure, index1, index2>;
|
||||
|
||||
private:
|
||||
table _table;
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```c++
|
||||
#include "binary_extension_contract.hpp"
|
||||
|
||||
using eosio::name;
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
row._secondary_key = "nothin"_n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::printbyp(eosio::name primary_key) {
|
||||
eosio::print_f("`printbyp` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value) };
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; printing.\n", primary_key.to_string());
|
||||
eosio::print_f("{%, %}\n", iter->_primary_key, iter->_secondary_key);
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not printing.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`printbyp` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::printbys(eosio::name secondary_key) {
|
||||
eosio::print_f("`printbys` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index2"_n>()};
|
||||
auto iter {index.find(secondary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index2"_n>().end()) {
|
||||
eosio::print_f("`_secondary_key`: % found; printing.\n", secondary_key.to_string());
|
||||
printbyp(iter->_primary_key);
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_secondary_key`: % not found; not printing.\n", secondary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`printbys` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::modifyp(eosio::name primary_key, name n) {
|
||||
eosio::print_f("`modifyp` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; modifying `_primary_key`.\n", primary_key.to_string());
|
||||
index.modify(iter, _self, [&](auto& row) {
|
||||
row._primary_key = n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not modifying `_primary_key`.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`modifyp` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::modifys(eosio::name primary_key, name n) {
|
||||
eosio::print_f("`modifys` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; modifying `_secondary_key`.\n", primary_key.to_string());
|
||||
index.modify(iter, _self, [&](auto& row) {
|
||||
row._secondary_key = n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not modifying `_secondary_key`.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`modifys` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
|
||||
```javascript
|
||||
{
|
||||
"____comment": "This file was generated with eosio-abigen. DO NOT EDIT ",
|
||||
"version": "eosio::abi/1.1",
|
||||
"types": [],
|
||||
"structs": [
|
||||
{
|
||||
"name": "modifyp",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "n",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "modifys",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "n",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "printbyp",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "printbys",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "modifyp",
|
||||
"type": "modifyp",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "modifys",
|
||||
"type": "modifys",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "printbyp",
|
||||
"type": "printbyp",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "printbys",
|
||||
"type": "printbys",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "regpkey",
|
||||
"type": "regpkey",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
],
|
||||
"tables": [
|
||||
{
|
||||
"name": "table",
|
||||
"type": "structure",
|
||||
"index_type": "i64",
|
||||
"key_names": [],
|
||||
"key_types": []
|
||||
}
|
||||
],
|
||||
"ricardian_clauses": [],
|
||||
"variants": []
|
||||
}
|
||||
```
|
||||
|
||||
<hr>
|
||||
|
||||
Take note of the action `regpkey`, and the struct `structure` in `con.hpp` and `con.cpp`; the parts of the contract we will be upgrading.
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```c++
|
||||
[[eosio::action]] void regpkey (eosio::name primary_key);
|
||||
```
|
||||
|
||||
```c++
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```c++
|
||||
[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
row._secondary_key = "nothin"_n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
Find below their corresponding sections in the `.abi` files:
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
|
||||
```javascript
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
<hr>
|
||||
|
||||
Now, let's start up a blockchain instance, compile this smart contract, and test it out.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cdt-cpp binary_extension_contract.cpp -o binary_extension_contract.wasm
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: 6c5c7d869a5be67611869b5f300bc452bc57d258d11755f12ced99c7d7fe154c 4160 bytes 729 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000d7600061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60067...
|
||||
# eosio <= eosio::setabi "0000000000ea3055d1020e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Next, let's push some data to our contract.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 3c708f10dcbf4412801d901eb82687e82287c2249a29a2f4e746d0116d6795f0 104 bytes 248 us
|
||||
# eosio <= eosio::regpkey {"primary_key":"eosio.name"}
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`regpkey` executing.
|
||||
`_primary_key`: eosio.name not found; registering.
|
||||
`regpkey` finished executing.
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Finally, let's read back the data we have just written.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: e9b77d3cfba322a7a3a93970c0c883cb8b67e2072a26d714d46eef9d79b2f55e 104 bytes 227 us
|
||||
# eosio <= eosio::printbyp {"primary_key":"eosio.name"}
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`printbyp` executing.
|
||||
`_primary_key`: eosio.name found; printing.
|
||||
{eosio.name, nothin}
|
||||
`printbyp` finished executing.
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
<hr>
|
||||
|
||||
Now, let's upgrade the smart contract by adding a new field to the table and a new parameter to an action while **NOT** wrapping the new field/parameter in an `eosio::binary_extension` type and see what happens:
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void regpkey (eosio::name primary_key, eosio::name secondary_key);
|
||||
-[[eosio::action]] void regpkey (eosio::name primary_key);
|
||||
```
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
+ eosio::name _non_binary_extension_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, name secondary_key) {
|
||||
-[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
+ if (secondary_key) {
|
||||
+ row._secondary_key = secondary_key;
|
||||
+ }
|
||||
+ else {
|
||||
row._secondary_key = "nothin"_n;
|
||||
+ }
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
```diff
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
+ },
|
||||
+ {
|
||||
+ "name": "secondary_key",
|
||||
+ "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
+ },
|
||||
+ {
|
||||
+ "name": "_non_binary_extension_key",
|
||||
+ "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Next, let's upgrade the contract and try to read from our table and write to our table the original way:
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cdt-cpp binary_extension_contract.cpp -o binary_extension_contract.wasm
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: b8ea485842fa5645e61d35edd97e78858e062409efcd0a4099d69385d9bc6b3e 4408 bytes 664 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000a2660061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60067...
|
||||
# eosio <= eosio::setabi "0000000000ea305583030e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
Error 3050003: eosio_assert_message assertion failure
|
||||
Error Details:
|
||||
assertion failure with message: read
|
||||
```
|
||||
|
||||
Whoops! We aren't able to read the data we've previously written to our table!
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name2"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
Error 3015014: Pack data exception
|
||||
Error Details:
|
||||
Missing field 'secondary_key' in input object while processing struct 'regpkey'
|
||||
```
|
||||
|
||||
Whoops! We aren't able to write to our table the original way with the upgraded action either!
|
||||
|
||||
<hr>
|
||||
|
||||
Ok, let's back up and wrap the new field and the new action parameter in an `eosio::binary_extension` type:
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void regpkey (eosio::name primary_key. eosio::binary_extension<eosio::name> secondary_key);
|
||||
-[[eosio::action]] void regpkey (eosio::name primary_key, eosio::name secondary_key);
|
||||
```
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
+ eosio::binary_extension<eosio::name> _binary_extension_key;
|
||||
- eosio::name _non_binary_extension_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, binary_extension<name> secondary_key) {
|
||||
-[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, name secondary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
if (secondary_key) {
|
||||
+ row._secondary_key = secondary_key.value();
|
||||
- row._secondary_key = secondary_key;
|
||||
}
|
||||
else {
|
||||
row._secondary_key = "nothin"_n;
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
```diff
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "secondary_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
+ "name": "_binary_extension_key",
|
||||
+ "type": "name$"
|
||||
- "name": "_non_binary_extension_key",
|
||||
- "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Note the `$` after the types now; this indicates that this type is an `eosio::binary_extension` type field.
|
||||
```diff
|
||||
{
|
||||
"name": "secondary_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "_binary_extension_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
```
|
||||
|
||||
Now, let's upgrade the contract again and try to read/write from/to our table:
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: 497584d4e43ec114dbef83c134570492893f49eacb555d0cd47d08ea4a3a72f7 4696 bytes 648 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000cb6a0061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60017...
|
||||
# eosio <= eosio::setabi "0000000000ea305581030e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 6108f3206e1824fe3a1fdcbc2fe733f38dc07ae3d411a1ccf777ecef56ddec97 104 bytes 224 us
|
||||
# eosio <= eosio::printbyp {"primary_key":"eosio.name"}
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`printbyp` executing.
|
||||
`_primary_key`: eosio.name found; printing.
|
||||
{eosio.name, nothin}
|
||||
`printbyp` finished executing.
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name2"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 75a135d1279a9c967078b0ebe337dc0cd58e1ccd07e370a899d9769391509afc 104 bytes 227 us
|
||||
# eosio <= eosio::regpkey {"primary_key":"eosio.name2"}
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`regpkey` executing.
|
||||
`_primary_key`: eosio.name2 not found; registering.
|
||||
`regpkey` finished executing.
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Nice! The smart contract is now backwards compatible for the future use of its tables and/or actions.
|
||||
|
||||
<hr>
|
||||
|
||||
Just keep these simple rules in mind when upgrading a smart contract.
|
||||
If you are adding a new field to a struct currently in use by a `eosio::multi_index` be **SURE** to:
|
||||
- add the field at the end of the struct.
|
||||
- wrap the type using an `eosio::binary_extension` type.
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
content_title: Native Tester And Compilation
|
||||
---
|
||||
|
||||
As of v1.5.0 native compilation can be performed and a new set of libraries to facilitate native testing and native "scratch pad" compilation. [`cdt-cc`](../03_command-reference/cdt-cc.md), [`cdt-cpp`](../03_command-reference/cdt-cpp.md) and [`cdt-ld`](../03_command-reference/cdt-ld.md) now support building "smart contracts" and unit tests natively for quick tests to help facilitate faster development (note the default implementations of a lot of the Antelope intrinsics (aka host functions) are currently asserts that state they are unavailable, these are user definable.)
|
||||
|
||||
## Getting Started
|
||||
Once you have your smart contract written then a test source file can be written.
|
||||
|
||||
`hello.hpp`
|
||||
```c++
|
||||
#include <eosio/eosio.hpp>
|
||||
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] hello : public eosio::contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
[[eosio::action]] void hi( name user );
|
||||
|
||||
// accessor for external contracts to easily send inline actions to your contract
|
||||
using hi_action = action_wrapper<"hi"_n, &hello::hi>;
|
||||
};
|
||||
```
|
||||
|
||||
and then a quick test
|
||||
`hello_test.cpp`
|
||||
```c++
|
||||
#include <eosio/eosio.hpp>
|
||||
#include <eosio/tester.hpp>
|
||||
|
||||
#include <hello.hpp>
|
||||
|
||||
using namespace eosio;
|
||||
using namespace eosio::native;
|
||||
|
||||
EOSIO_TEST_BEGIN(hello_test)
|
||||
// These can be redefined by the user to suit there needs per unit test
|
||||
// the idea is that in a future release there will be a base library that
|
||||
// initializes these to "useable" default implementations and probably
|
||||
// helpers to more easily define read_action_data and action_data_size intrinsics
|
||||
// like these"
|
||||
intrinsics::set_intrinsic<intrinsics::read_action_data>(
|
||||
[](void* m, uint32_t len) {
|
||||
check(len <= sizeof(eosio::name), "failed from read_action_data");
|
||||
*((eosio::name*)m) = "hello"_n;
|
||||
return len;
|
||||
});
|
||||
|
||||
intrinsics::set_intrinsic<intrinsics::action_data_size>(
|
||||
[]() {
|
||||
return (uint32_t)sizeof(eosio::name);
|
||||
});
|
||||
|
||||
intrinsics::set_intrinsic<intrinsics::require_auth>(
|
||||
[](capi_name nm) {
|
||||
});
|
||||
|
||||
|
||||
// "Name : hello" should be in the print buffer
|
||||
CHECK_PRINT("Name : hello",
|
||||
[]() {
|
||||
apply("test"_n.value, "test"_n.value, "hi"_n.value);
|
||||
});
|
||||
|
||||
// should not assert
|
||||
apply("test"_n.value, "test"_n.value, "check"_n.value);
|
||||
|
||||
name nm = "null"_n;
|
||||
intrinsics::set_intrinsic<intrinsics::read_action_data>(
|
||||
[&](void* m, uint32_t len) {
|
||||
check(len <= sizeof(eosio::name), "failed from read_action_data");
|
||||
*((eosio::name*)m) = nm;
|
||||
return len;
|
||||
});
|
||||
|
||||
REQUIRE_ASSERT( "check name not equal to `hello`",
|
||||
[]() {
|
||||
// should assert
|
||||
apply("test"_n.value, "test"_n.value, "check"_n.value);
|
||||
});
|
||||
|
||||
EOSIO_TEST_END
|
||||
|
||||
// boilerplate main, this will be generated in a future release
|
||||
int main(int argc, char** argv) {
|
||||
silence_output(true);
|
||||
EOSIO_TEST(hello_test);
|
||||
return has_failed();
|
||||
}
|
||||
```
|
||||
|
||||
Every `intrinsic` that is defined for eosio (prints, require_auth, etc.) is re-definable given the `intrinsics::set_intrinsics<intrinsics::the_intrinsic_name>()` functions. These take a lambda whose arguments and return type should match that of the intrinsic you are trying to define. This gives the contract writer the flexibility to modify behavior to suit the unit test being written. A sister function `intrinsics::get_intrinsics<intrinsics::the_intrinsic_name>()` will return the function object that currently defines the behavior for said intrinsic. This pattern can be used to mock functionality and allow for easier testing of smart contracts. For more information see, either the [tests](https://github.com/AntelopeIO/cdt/tree/main/examples/hello/tests/) directory or [hello_test.cpp](https://github.com/AntelopeIO/cdt/blob/main/examples/hello/tests/hello_test.cpp) for working examples.
|
||||
|
||||
## Compiling Native Code
|
||||
- Raw `cdt-cpp` to compile the test or program the only addition needed to the command line is to add the flag `-fnative` this will then generate native code instead of `wasm` code.
|
||||
- Via CMake
|
||||
- `add_native_library` and `add_native_executable` CMake macros have been added (these are a drop in replacement for add_library and add_executable).
|
||||
|
||||
## CDT Native Tester API
|
||||
- CHECK_ASSERT(...) : This macro will check whether a particular assert has occured and flag the tests as failed but allow the rest of the tests to run.
|
||||
- This is called either by
|
||||
- `CHECK_ASSERT("<assert message>", [](<args>){ whatever_function(<args>); })`
|
||||
- `CHECK_ASSERT([](std::string msg){ user defined comparison function }, [](<args>){ whatever_function(<args>); })`
|
||||
- CHECK_PRINT(...) : This macro will check whether the print buffer holds the string that is expected and flag the tests as failed but allow the rest of the test to run.
|
||||
- This is called either by
|
||||
- `CHECK_PRINT("<print message>", [](<args>){ whatever_function(<args>); })`
|
||||
- `CHECK_PRINT([](std::string print_buffer){ user defined comparison function }, [](<args>){ whatever_function(<args>); })`
|
||||
- CHECK_EQUAL(X, Y) : This macro will check whether two inputs equal eachother and fail the test but allow the rest of the test to continue.
|
||||
- REQUIRE_ASSERT(...) : This macro will check whether a particular assert has occured and flag the tests as failed and halt the test on failure.
|
||||
- This is called either by
|
||||
- `REQUIRE_ASSERT("<assert message>", [](<args>){ whatever_function(<args>); })`
|
||||
- `REQUIRE_ASSERT([](std::string msg){ user defined comparison function }, [](<args>){ whatever_function(<args>); })`
|
||||
- REQUIRE_PRINT(...) : This macro will check whether the print buffer holds the string that is expected and flag the tests as failed and halt the test on failure.
|
||||
- This is called either by
|
||||
- `REQUIRE_PRINT("<print message>", [](<args>){ whatever_function(<args>); })`
|
||||
- `REQUIRE_PRINT([](std::string print_buffer){ user defined comparison function }, [](<args>){ whatever_function(<args>); })`
|
||||
- REQUIRE_EQUAL(X, Y) : This macro will check whether two inputs `X` and `Y` equal eachother and fail the test and halt the test on failure.
|
||||
- EOSIO_TEST_BEGIN(X) : This macro defines the beginning of a unit test and assigns `X` as the symbolic name of that test.
|
||||
- EOSIO_TEST_END : This macro defines the end of a unit test.
|
||||
- EOSIO_TEST(X) : This is used to run a particular named unit test `X` in the main function.
|
||||
@@ -1,241 +0,0 @@
|
||||
---
|
||||
content_title: Crypto Extensions
|
||||
---
|
||||
|
||||
As of `v3.0` crypto host functions were extended to include
|
||||
- `mod_exp`: Big integer modular exponentiation
|
||||
- `alt_bn128_add`, `alt_bn128_mul`, `alt_bn128_pair`: Add, multiply, and pairing check functions for the `alt_bn128` elliptic curve
|
||||
- `blake2_f`: `BLAKE2b F` compression function
|
||||
- `sha3`: sha3` hash function using `SHA3 NIST`
|
||||
- `Keccak256`: `sha3` hash function using `SHA3 Keccak`
|
||||
- `k1_recover`: Safe `ECDSA` uncompressed pubkey recover for the `secp256k1` curve
|
||||
|
||||
In `v3.0`, `C` format was supported; in `v3.1`, `C++` format was added for better data abstraction.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- In `nodeos`, activate protocol feature `CRYPTO_PRIMITIVES` (`68d6405cb8df3de95bd834ebb408196578500a9f818ff62ccc68f60b932f7d82`)
|
||||
- In smart contract code, include `crypto_ext.hpp`
|
||||
|
||||
## C Format
|
||||
|
||||
- `int32_t alt_bn128_add( const char* op1, uint32_t op1_len, const char* op2, uint32_t op2_len, char* result, uint32_t result_len )`
|
||||
Perform addition operation on the elliptic curve `alt_bn128`, store the result in `result`, and return `0` if success otherwise `-1`
|
||||
- `int32_t alt_bn128_mul( const char* g1, uint32_t g1_len, const char* scalar, uint32_t scalar_len, char* result, uint32_t result_len )`
|
||||
Perform scalar multiplication operation on the elliptic curve `alt_bn128`
|
||||
- `int32_t alt_bn128_pair( const char* pairs, uint32_t pairs_len )`
|
||||
Perform Optimal-Ate pairing check elliptic curve `alt_bn128`, and return `0` if `true` and successful, `1` if `false`, otherwise `-1`
|
||||
- `int32_t mod_exp( const char* base, uint32_t base_len, const char* exp, uint32_t exp_len, const char* mod, uint32_t mod_len, char* result, uint32_t result_len )`
|
||||
Calculate `( BASE^EXP ) % MOD`, store in `result`, and return `0` if successful, otherwise `-1`
|
||||
- `int32_t blake2_f( uint32_t rounds, const char* state, uint32_t state_len, const char* msg, uint32_t msg_len, const char* t0_offset, uint32_t t0_len, const char* t1_offset, uint32_t t1_len, int32_t final, char* result, uint32_t result_len)`
|
||||
Implement BLAKE2 compression function `F`. Return `0` if success otherwise `-1`
|
||||
- `eosio::checksum256 sha3(const char* data, uint32_t length)`
|
||||
Return hash of `data` using `SHA3 NIST`
|
||||
- `void assert_sha3(const char* data, uint32_t length, const eosio::checksum256& hash)`
|
||||
Test if the SHA3 hash generated from data matches the provided digest
|
||||
- `eosio::checksum256 keccak(const char* data, uint32_t length)`
|
||||
Return hash of `data` using `SHA3 Keccak`
|
||||
- `void assert_keccak(const char* data, uint32_t length, const eosio::checksum256& hash)
|
||||
Test if the SHA3 keccak hash generated from data matches the provided digest
|
||||
- `int32_t k1_recover( const char* sig, uint32_t sig_len, const char* dig, uint32_t dig_len, char* pub, uint32_t pub_len )`
|
||||
Calculates the uncompressed public key used for a given signature on a given digest. Return `0` if success otherwise `-1`
|
||||
|
||||
## C++ Format
|
||||
|
||||
C++ types were added to represent `G1` and `G2` points (read and write) and views (read-only), and represent big integers. Their definitions are
|
||||
|
||||
### Types
|
||||
|
||||
```c++
|
||||
/**
|
||||
* Abstracts mutable G1 and G2 points
|
||||
*
|
||||
*/
|
||||
template <std::size_t Size = 32>
|
||||
struct ec_point {
|
||||
/**
|
||||
* Bytes of the x coordinate
|
||||
*/
|
||||
std::vector<char> x;
|
||||
|
||||
/**
|
||||
* Bytes of the y coordinate
|
||||
*/
|
||||
std::vector<char> y;
|
||||
|
||||
/**
|
||||
* Construct a point given x and y
|
||||
*
|
||||
* @param x_ - The x coordinate, a vector of chars
|
||||
* @param y_ - The y coordinate, a vector of chars
|
||||
*/
|
||||
ec_point(std::vector<char>& x_, std::vector<char>& y_);
|
||||
|
||||
/**
|
||||
* Construct a point given a serialized point
|
||||
*
|
||||
* @param p - The serialized point
|
||||
*/
|
||||
ec_point(std::vector<char>& p);
|
||||
|
||||
/**
|
||||
* Return serialzed point containing only x and y
|
||||
*/
|
||||
std::vector<char> serialized() const;
|
||||
};
|
||||
|
||||
/**
|
||||
* Abstracts read-only G1 and G2 points
|
||||
*/
|
||||
template <std::size_t Size = 32>
|
||||
struct ec_point_view {
|
||||
/**
|
||||
* Pointer to the x coordinate
|
||||
*/
|
||||
const char* x;
|
||||
|
||||
/**
|
||||
* Pointer to the y coordinate
|
||||
*/
|
||||
const char* y;
|
||||
|
||||
/**
|
||||
* Number of bytes in each of x and y
|
||||
*/
|
||||
uint32_t size;
|
||||
|
||||
/**
|
||||
* Construct a point view from x and y
|
||||
*
|
||||
* @param x_ - The x coordinate, poiter to chars
|
||||
* @param x_size - x's size
|
||||
* @param y_ - The y coordinate, poiter to chars
|
||||
* @param y_size - y's size
|
||||
*/
|
||||
ec_point_view(const char* x_, uint32_t x_size, const char* y_, uint32_t y_size);
|
||||
|
||||
/**
|
||||
* Construct a point view from a serialized point
|
||||
*
|
||||
* @param p - The serialized point
|
||||
*/
|
||||
ec_point_view(const std::vector<char>& p);
|
||||
|
||||
/**
|
||||
* Construct a point view from a point
|
||||
*
|
||||
* @param p - The point
|
||||
*/
|
||||
ec_point_view(const ec_point<Size>& p);
|
||||
|
||||
/**
|
||||
* Return serialzed point containing only x and y
|
||||
*/
|
||||
std::vector<char> serialized() const;
|
||||
};
|
||||
|
||||
static constexpr size_t g1_coordinate_size = 32;
|
||||
static constexpr size_t g2_coordinate_size = 64;
|
||||
|
||||
using g1_point = ec_point<g1_coordinate_size>;
|
||||
using g2_point = ec_point<g2_coordinate_size>;
|
||||
using g1_point_view = ec_point_view<g1_coordinate_size>;
|
||||
using g2_point_view = ec_point_view<g2_coordinate_size>;
|
||||
|
||||
/**
|
||||
* Big integer.
|
||||
*
|
||||
* @ingroup crypto
|
||||
*/
|
||||
using bigint = std::vector<char>;
|
||||
```
|
||||
|
||||
### Methods
|
||||
|
||||
- `alt_bn128_add`
|
||||
```c++
|
||||
template <typename T>
|
||||
g1_point alt_bn128_add( const T& op1, const T& op2 )
|
||||
```
|
||||
Take two G1 points or G1 views as input and return a G1 point.
|
||||
- `alt_bn128_mul`
|
||||
```c++
|
||||
template <typename T>
|
||||
g1_point alt_bn128_mul( const T& g1, const bigint& scalar)
|
||||
```
|
||||
Take a G1 point or view and a bigint as input and return a G1 point
|
||||
- `alt_bn128_pair`
|
||||
```c++
|
||||
template <typename G1_T, typename G2_T>
|
||||
int32_t alt_bn128_pair( const std::vector<std::pair<G1_T, G2_T>>& pairs )
|
||||
```
|
||||
Take a pair of G1 and G2 as input.
|
||||
- `mod_exp`
|
||||
```c++
|
||||
int32_t mod_exp( const bigint& base, const bigint& exp, const bigint& mod, bigint& result )
|
||||
```
|
||||
Take bigints as input
|
||||
|
||||
### Examples
|
||||
|
||||
- `alt_bn128_add`
|
||||
```c++
|
||||
std::vector<char> x1, y1, x2, y2;
|
||||
|
||||
// point
|
||||
eosio::g1_point point1 {x1, y1};
|
||||
eosio::g1_point point2 {x2, y2};
|
||||
auto result = eosio::alt_bn128_add(point1, point2);
|
||||
|
||||
// view
|
||||
eosio::g1_point_view point_view1 {x1.data(), x1.size(), y1.data(), y1.size()};
|
||||
eosio::g1_point_view point_view2 {x2.data(), x2.size(), y2.data(), y2.size()};
|
||||
result = eosio::alt_bn128_add(point_view1, point_view2);
|
||||
```
|
||||
|
||||
- `alt_bn128_mul`
|
||||
```c++
|
||||
std::vector<char> x, y, scaler;
|
||||
eosio::bigint s {scalar};
|
||||
|
||||
// point
|
||||
eosio::g1_point g1_point {x, y};
|
||||
auto result = eosio::alt_bn128_mul(g1_point, s);
|
||||
|
||||
// view
|
||||
eosio::g1_point_view g1_view {x.data(), x.size(), y.data(), y.size()};
|
||||
result = eosio::alt_bn128_mul(g1_view, s);
|
||||
```
|
||||
|
||||
- `alt_bn128_pair`
|
||||
```c++
|
||||
std::vector<char> g1_a_x, g1_a_y, g2_a_x, g2_a_y, g1_b_x, g1_b_y, g2_b_x, g2_b_y;
|
||||
|
||||
|
||||
// point
|
||||
eosio::g1_point g1_a {g1_a_x, g1_a_y};
|
||||
eosio::g2_point g2_a {g2_a_x, g2_a_y};
|
||||
eosio::g1_point g1_b {g1_b_x, g1_b_y};
|
||||
eosio::g2_point g2_b {g2_b_x, g2_b_y};
|
||||
std::vector<std::pair<eosio::g1_point, eosio::g2_point>> pairs { {g1_a, g2_a}, {g1_b, g2_b} };
|
||||
auto result = eosio::alt_bn128_pair(pairs);
|
||||
|
||||
// view
|
||||
eosio::g1_point_view g1_view_a {g1_a_x.data(), g1_a_x.size(), g1_a_y.data(), g1_a_y.size()};
|
||||
eosio::g2_point_view g2_view_a {g2_a_x.data(), g2_a_x.size(), g2_a_y.data(), g2_a_y.size()};
|
||||
eosio::g1_point_view g1_view_b {g1_b_x.data(), g1_b_x.size(), g1_b_y.data(), g1_b_y.size()};
|
||||
eosio::g2_point_view g2_view_b {g2_b_x.data(), g2_b_x.size(), g2_b_y.data(), g2_b_y.size()};
|
||||
std::vector<std::pair<eosio::g1_point_view, eosio::g2_point_view>> view_pairs { {g1_a, g2_a}, {g1_b, g2_b} };
|
||||
result = eosio::alt_bn128_pair(view_pairs);
|
||||
```
|
||||
|
||||
- `mod_exp`
|
||||
```c++
|
||||
std::vector<char> base, exp, modulo;
|
||||
eosio::bigint base_val {base};
|
||||
eosio::bigint exp_val {exp};
|
||||
eosio::bigint modulo_val {modulo};
|
||||
eosio::bigint result( modulo.size(), '\0' );
|
||||
|
||||
auto rc = eosio::mod_exp(base_val, exp_val, modulo_val, result);
|
||||
```
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
content_title: Deferred Transactions
|
||||
---
|
||||
|
||||
Deferred communication conceptually takes the form of action notifications sent to a peer transaction. Deferred actions get scheduled to run, at best, at a later time, at the producer's discretion. There is no guarantee that a deferred action will be executed.
|
||||
|
||||
As already mentioned, deferred communication will get scheduled later at the producer's discretion. From the perspective of the originating transaction, i.e., the transaction that creates the deferred transaction, it can only determine whether the create request was submitted successfully or whether it failed (if it fails, it will fail immediately). Deferred transactions carry the authority of the contract that sends them. A transaction can cancel a deferred transaction.
|
||||
|
||||
[[warning | Deferred Transactions Are Deprecated]]
|
||||
| As of [EOSIO 2.0 RC1](https://github.com/EOSIO/eos/releases/tag/v2.0.0-rc1) deferred transactions are deprecated.
|
||||
|
||||
Due to the above described behaviors it is not recommended to use `deferred transactions`.
|
||||
|
||||
[[warning | Duplicate deferred transaction IDs]]
|
||||
| In earlier versions, prior to `v1.8.0`, it is possible to observe rare deferred transaction ID collisions because technically the protocol's validation rules allow any number of duplicate deferred transaction IDs. However, the block producing code prior to `v1.8.0` limited this to exactly one duplicate ID in the same block followed by at-most one duplicate ID in the following block. This behavior was mitigated starting with version `v1.8.0` making it functionally impossible to be achieved at the block producing code level. On top of that, the same version `v1.8.0` introduced the optional `NO_DUPLICATE_DEFERRED_ID` protocol feature which, if deployed, it makes this behavior impossible at the protocol layer as well.
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
content_title: How to compile a smart contract via CLI
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions how to compile a smart contract using the command line interface (CLI).
|
||||
|
||||
## Before you begin
|
||||
|
||||
* You have the source of the contract saved in a local folder, e.g. `./examples/hello/`
|
||||
## Procedure
|
||||
|
||||
Follow the following steps to compile your contract.
|
||||
|
||||
1. Navigate to the hello folder in examples `./examples/hello`. You should see the `./src/hello.cpp` file.
|
||||
|
||||
2. Run the following commands:
|
||||
|
||||
```sh
|
||||
mkdir build
|
||||
cd build
|
||||
cdt-cpp ../src/hello.cpp -o hello.wasm -I ../include/
|
||||
```
|
||||
|
||||
Where:
|
||||
- `../src/hello.cpp` = Is the input cpp source file to be compiled.
|
||||
- `-o hello.wasm` = It instructs the `cdt--cpp` tool who to name the output wasm file.
|
||||
- `-I ../include/` = It tells `cdt-cpp` tool what the include folder path is, in this particular case it is a relative path.
|
||||
|
||||
3. Verify the following two files were generated:
|
||||
|
||||
* the compiled binary wasm: `hello.wasm`,
|
||||
* and the generated ABI file: `hello.abi`.
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to compile a smart contract using the command line interface (CLI).
|
||||
@@ -1,76 +0,0 @@
|
||||
---
|
||||
content_title: How to configure CMake
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions how to configure CMake.
|
||||
|
||||
## Before you begin
|
||||
|
||||
* You have installed CMake, for detailed instructions consult the official [CMake installation page](https://CMake.org/install/).
|
||||
|
||||
## Procedure
|
||||
|
||||
The following steps show:
|
||||
|
||||
* [Automatic generation of CMake configuration](#automatic-generation-of-CMake-configuration)
|
||||
* [Manual generation of CMake configuration](#manual-generation-of-CMake-configuration)
|
||||
|
||||
### Automatic generation of CMake configuration
|
||||
|
||||
To compile a smart contract project with CMake, you'll need a CMake file. To use the new `cdt-init` tool to generate the directory structure stub `.hpp/.cpp` files and the CMake configuration files follow these steps:
|
||||
|
||||
```sh
|
||||
cd ~
|
||||
cdt-init --path=. --project=test_contract
|
||||
cd test_contract
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
ls -al test_contract
|
||||
```
|
||||
|
||||
At this point, you'll have the `test_contract.abi` and `test_contract.wasm` files in `~/test_contract/test_contract`. These files are ready to be deployed.
|
||||
|
||||
### Manual generation of CMake configuration
|
||||
|
||||
To create manually the CMake configuration, the template `CMakeLists.txt` in the examples folder is a good boilerplate for manual usage.
|
||||
|
||||
1. In `CMakeLists.txt`:
|
||||
|
||||
```sh
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project(test_example VERSION 1.0.0)
|
||||
|
||||
find_package(cdt)
|
||||
|
||||
add_contract( test test test.cpp )
|
||||
```
|
||||
|
||||
2. In `test.cpp`:
|
||||
|
||||
```c++
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] test : public eosio::contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
[[eosio::action]] void testact( name test ) {
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
3. The following CMake macros are provided:
|
||||
|
||||
* `add_contract` is used to build your smart contract and generate an ABI. The first parameter is the contract name, the second is the CMake target name, and the rest are the CPP files needed to build the contract.
|
||||
|
||||
* `target_ricardian_directory` can be used to add the directory where your ricardian contracts live to a specific CMake target.
|
||||
|
||||
* `add_native_library` and `add_native_executable` are CMake macros for the native tester. They are drop in replacements for `add_library` and `add_executable`.
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to configure CMake .
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
content_title: How to compile a smart contract with CMake
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to compile a smart contract with CMake.
|
||||
|
||||
## Before you begin
|
||||
|
||||
* You have the source of the contract saved in a local folder, e.g. `./examples/hello/`
|
||||
|
||||
## Procedure
|
||||
|
||||
Follow the following steps to compile your contract.
|
||||
|
||||
1. Navigate to the hello folder in examples (./examples/hello), you should then see the ./src/hello.cpp file
|
||||
2. Run following commands:
|
||||
|
||||
```sh
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
3. Verify the following two files were generated:
|
||||
|
||||
* the compiled binary wasm: `hello.wasm`,
|
||||
* and the generated ABI file: `hello.abi`.
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to compile a smart contract with CMake.
|
||||
@@ -1,82 +0,0 @@
|
||||
---
|
||||
content_title: How To Perform Authorization Checks
|
||||
link_text: How To Perform Authorization Checks
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions how to perform authorization checks in a smart contract.
|
||||
|
||||
## Before you begin
|
||||
|
||||
1. You have the sources of a contract with a `hi` action defined and implemented.
|
||||
2. The `hi` action has defined one input parameter `user` of type `name`.
|
||||
|
||||
## Code Reference
|
||||
|
||||
See the following code reference guides for functions which can be used to implement authorization checks in a smart contract:
|
||||
|
||||
* function [has_auth(name n)](../../reference/Namespaces/namespaceeosio#function-has_auth)
|
||||
* function [require_auth(name n)](../../reference/Namespaces/namespaceeosio#function-require_auth)
|
||||
* function [require_auth2(capi_name name, capi_name permission)](../../reference/Files/action_8h)
|
||||
* function [check(bool pred, ...)](../../reference/Namespaces/namespaceeosio#function-check)
|
||||
|
||||
## Procedure
|
||||
|
||||
The following steps show how to check authorization for `user` account for the `hi` action. There are three ways to accomplish an authorization check in a smart contract action implementation. You can use any of the methods provided below depending on your needs:
|
||||
|
||||
* [Use check(...) in combination with has_auth(...)](#1-use-checkhas_auth)
|
||||
* [Use require_auth(...)](#2-use-require_auth)
|
||||
* [Use require_auth2(...)](#3-use-require_auth2)
|
||||
|
||||
### 1. Use check(has_auth(...)...)
|
||||
|
||||
The following code example enforces the action `hi` to be executed only by the account that is sent as parameter to the action, no matter what permission the account uses to sign the transaction (e.g. owner, active, code).
|
||||
|
||||
[[info | Error message is custom]]
|
||||
| Observe that in this case the yielded error message is a custom one and thus it can be used to provide a better experience for the user.
|
||||
|
||||
```cpp
|
||||
#include <capi/eosio/action.h>
|
||||
|
||||
void hi( name user ) {
|
||||
check(has_auth(user), "User is not authorized to perform this action.");
|
||||
print( "Hello, ", name{user} );
|
||||
}
|
||||
```
|
||||
|
||||
Another example can be found in the [Tic Tac Toe Tutorial](https://docs.eosnetwork.com/docs/latest/smart-contracts/tutorials/tic-tac-toe-game-contract#create-tictactoecpp-file).
|
||||
|
||||
### 2. Use require_auth
|
||||
|
||||
The below code enforces the action `hi` to be executed only by the account that is sent as parameter to the action, no matter what permission the account uses to sign the transaction (e.g. owner, active, code).
|
||||
|
||||
```cpp
|
||||
void hi( name user ) {
|
||||
require_auth( user );
|
||||
print( "Hello, ", name{user} );
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Error message is not custom]]
|
||||
| Note that this time you can not customize the yielded error message, it will be a generic authorization error message.
|
||||
|
||||
### 3. Use require_auth2
|
||||
|
||||
The below code is enforces the action `hi` to be executed only by the account that is sent as parameter to the action and only if the permission used to sign the transaction is the 'active' one. In other words, if the same user uses the transaction with a different permission (e.g. code, owner) the execution of the action is halted.
|
||||
|
||||
```cpp
|
||||
#include <capi/eosio/action.h>
|
||||
|
||||
void hi( name user ) {
|
||||
require_auth2(user.value, "active"_n.value);
|
||||
print( "Hello, ", name{user} );
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Error message is not custom]]
|
||||
| Note that this time, as well as previous method, you can not customize the yielded error message, it will be a generic authorization error message.
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to perform authorization checks in a smart contract.
|
||||
@@ -1,128 +0,0 @@
|
||||
---
|
||||
content_title: How to define a primary index
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to define a primary index for a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to define a primary index for the multi-index table `testtab`.
|
||||
|
||||
### 1. Preparation And Initialization
|
||||
|
||||
Include the `eosio.hpp` header and use the `using` directive to access the `eosio` namespace.
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
```
|
||||
|
||||
### 2. Define The Table Data Structure
|
||||
|
||||
Define the data structure for the multi-index table.
|
||||
|
||||
```cpp
|
||||
struct [[eosio::table]] test_table {
|
||||
};
|
||||
```
|
||||
|
||||
Add the data structure data members. Each data member corresponds to a field of the multi-index table. A primary key is required when defining a multi-index table structure, therefore you need to know which is the multi-index table field that is the primary key for your multi-index table. The corresponding data member for the primary key field must store unique values. In this case it is the `test_primary` data member of type `eosio::name`.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
+ // this data member stores a name for each row of the multi-index table
|
||||
+ name test_primary;
|
||||
+ // additional data stored in table row, e.g. an uint64_t type data
|
||||
+ uint64_t datum;
|
||||
};
|
||||
```
|
||||
|
||||
### 3. Define The Primary Index
|
||||
|
||||
Add the definition of the primary index for the multi-index table. The primary index type must be uint64_t, it must be unique and must be named `primary_key()`, otherwise the compiler (cdt-cpp) will generate an error saying it can not find the field to use as the primary key:
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
+ // mandatory definition for primary key getter
|
||||
+ uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
```
|
||||
|
||||
[[info | Secondary indexes information]]
|
||||
| Secondary indexes may be defined which are not unique. There can be up to 16 secondary indexes. Secondary indices support the following types:
|
||||
* uint64_t
|
||||
* uint128_t
|
||||
* uint256_t
|
||||
* double
|
||||
* long double
|
||||
|
||||
### 4. Define A Multi-Index Type Alias
|
||||
|
||||
For ease of use, define a type alias `test_table_t` based on the `eosio::multi_index` template type, parametarized with a random name `"testtaba"` and the `test_table` data structure. The names must adhere to `Antelope` account name restrictions.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
+ typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
```
|
||||
|
||||
### 5. Instantiate The Multi-Index Table
|
||||
|
||||
Declare the `testtab` multi-index table as a data member of type `test_table_t`.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
+ test_table_t testtab;
|
||||
```
|
||||
|
||||
Now you have instantiated a multi-index table, and assigned to `testtab` variable, which has a primary index defined for its `test_primary` data member.
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to define a primary index for a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [insert data in the multi-index table](./how-to-insert-data-into-a-multi-index-table).
|
||||
* You can [iterate and retrieve data](./how-to-iterate-and-retrieve-a-multi_index-table) from the multi-index table.
|
||||
@@ -1,131 +0,0 @@
|
||||
---
|
||||
content_title: How to define a secondary index
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to define a secondary index for a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index table `testtab` along with its `test_table` data structure, its mandatory primary index, and the type alias definition `test_table_t`. Please see [How To Define A Primary Index](./how-to-define-a-primary-index) to set up these prerequisites.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to define a secondary index for the multi-index table `testtab`.
|
||||
|
||||
### 1. Extend The Multi-Index Data Structure
|
||||
|
||||
Add a second data member `secondary`, of type `eosio::name`, to the `test_table` data structure that defines the `testtab` data.
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
+ name secondary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
```
|
||||
|
||||
### 2. Add The Secondary Index Accessor Method
|
||||
|
||||
Add `by_secondary()` method, which is the index accessor method to the new data member added. The secondary index, that will be added in the next step, will index this new data structure data member.
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
name secondary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
+ uint64_t by_secondary( ) const { return secondary.value; }
|
||||
};
|
||||
```
|
||||
|
||||
### 3. Define The Secondary Index
|
||||
|
||||
In the `test_table_t` type definition, add the definition of the secondary index with the use of the `eosio::indexed_by` template. `eosio::index_by` needs two parameters: the name of the index, `"secid"_n`, and a function call operator which extracts the value from the secondary data member as an index key. The function call operator is defined with the use of `eosio::const_mem_fun` template which receives two parameters: the data structure `test_table` and the reference to the getter function member `by_secondary`.
|
||||
|
||||
```diff
|
||||
- typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
+ typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
```
|
||||
|
||||
For reference see below the full contract definition code with all the changes described above.
|
||||
|
||||
__multi_index_example.hpp__
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
// multi-index example contract class
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
// contract class constructor
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
// contract base class contructor
|
||||
contract(receiver, code, ds),
|
||||
// instantiate multi-index instance as data member (find it defined below)
|
||||
testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
name secondary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
uint64_t by_secondary( ) const { return secondary.value; }
|
||||
};
|
||||
|
||||
// the multi-index type definition, for ease of use a type alias `test_table_t` is defined,
|
||||
// based on the multi_index template type, parametarized with a random name, the
|
||||
// test_table data structure, and the secondary index
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
|
||||
// the multi-index table instance declared as a data member of type test_table_t
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set( name user );
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
Now you have instantiated the `testtab` as a multi-index table which has a primary index defined for its `test_primary` data member and a secondary index for its `secondary` data member.
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
[[warning | Do not add a secondary index to an existing table]]
|
||||
| Adding a secondary index to an existing multi-index table it will have unpredictable outcome. Consult the [Data design and migration](../best-practices/data-design-and-migration) documentation for more details.
|
||||
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to define a secondary index for a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [iterate and retrieve data using the secondary index](./how-to-iterate-and-retrieve-a-multi_index-table-based-on-secondary-index) from the multi-index table.
|
||||
@@ -1,157 +0,0 @@
|
||||
---
|
||||
content_title: How to define a singleton
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to define a singleton.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`singleton`](../../reference/Classes/classeosio_1_1singleton) class.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
|
||||
## Procedure
|
||||
|
||||
A singleton uses a single multi-index table to store named objects of various types. To define a simple singleton, which is storing an account `name` as primary value and a `uint64_t` as secondary value in structure `testtable`, follow the steps below:
|
||||
|
||||
### 1. Preparation And Initialization
|
||||
|
||||
Include the `eosio.hpp` and `singleton.hpp` headers and declare the `eosio` namespace usage
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
#include <eosio/singleton.hpp>
|
||||
using namespace eosio;
|
||||
```
|
||||
|
||||
### 2. Define The Table Data Structure
|
||||
|
||||
Define the data structure for the multi-index table:
|
||||
|
||||
```cpp
|
||||
struct [[eosio::table]] testtable {
|
||||
name primary_value;
|
||||
uint64_t secondary_value;
|
||||
};
|
||||
```
|
||||
|
||||
### 3. Define A Singleton Type Alias
|
||||
|
||||
For ease of use, define a type alias `singleton_type` based on the `eosio::singleton` template type, parametarized with a random name `"testtable"` and the `testtable` data structure. The names must adhere to `Antelope` account name restrictions.
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] testtable {
|
||||
name primary_value;
|
||||
uint64_t secondary_value;
|
||||
};
|
||||
+using singleton_type = eosio::singleton<"testtable"_n, testtable>;
|
||||
```
|
||||
|
||||
### 4. Define The Singleton Instance
|
||||
|
||||
Define the singleton table instance as a data member of type `singleton_type`.
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] testtable {
|
||||
name primary_value;
|
||||
uint64_t secondary_value;
|
||||
};
|
||||
|
||||
using singleton_type = eosio::singleton<"testtable"_n, testtable>;
|
||||
+singleton_type singleton_instance;
|
||||
```
|
||||
|
||||
### 5. Initialize And Use The Singleton Instance
|
||||
|
||||
Initialize the `singleton_instance` using the constructor with the parameters `receiver` and `code` (the last one in in this case is `receiver.value`). These parameters, combined with `testtable`, provide access to the partition of the RAM cache used by this singleton. In our example you initialize the `singleton_instance` data member in the smart contract constructor, see below:
|
||||
|
||||
```diff
|
||||
// singleton contract constructor
|
||||
singleton_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
contract(receiver, code, ds),
|
||||
+ singleton_instance(receiver, receiver.value)
|
||||
{ }
|
||||
}
|
||||
```
|
||||
|
||||
Now you have defined and initialized a singleton as a data member for the smart contract class. You can access it from any of the smart contract methods via `singleton_instance` data member. Below you can find a possible implementation for the full class singleton example contract.
|
||||
|
||||
__singleton_example.hpp__
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
#include <eosio/singleton.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] singleton_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
singleton_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
contract(receiver, code, ds),
|
||||
singleton_instance(receiver, receiver.value)
|
||||
{}
|
||||
|
||||
[[eosio::action]]
|
||||
void set( name user, uint64_t value );
|
||||
[[eosio::action]]
|
||||
void get( );
|
||||
|
||||
struct [[eosio::table]] testtable {
|
||||
name primary_value;
|
||||
uint64_t secondary_value;
|
||||
uint64_t primary_key() const { return primary_value.value; }
|
||||
} testtablerow;
|
||||
|
||||
using singleton_type = eosio::singleton<"testtable"_n, testtable>;
|
||||
singleton_type singleton_instance;
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &singleton_example::set>;
|
||||
using get_action = action_wrapper<"get"_n, &singleton_example::get>;
|
||||
};
|
||||
```
|
||||
|
||||
Below is an example for the `get` and `set` actions. It also demonstrates the usage of the `get` and `set` singleton methods. Note that the `set` action makes use of the singleton's `set` method, for which the second parameter is the payer account for the RAM needed to store the new value.
|
||||
|
||||
__singleton_example.cpp__
|
||||
|
||||
```cpp
|
||||
#include <singleton_example.hpp>
|
||||
|
||||
[[eosio::action]] void singleton_example::set( name user, uint64_t value ) {
|
||||
auto entry_stored = singleton_instance.get_or_create(user, testtablerow);
|
||||
entry_stored.primary_value = user;
|
||||
entry_stored.secondary_value = value;
|
||||
singleton_instance.set(entry_stored, user);
|
||||
}
|
||||
|
||||
[[eosio::action]] void singleton_example::get( ) {
|
||||
if (singleton_instance.exists())
|
||||
eosio::print(
|
||||
"Value stored for: ",
|
||||
name{singleton_instance.get().primary_value.value},
|
||||
" is ",
|
||||
singleton_instance.get().secondary_value,
|
||||
"\n");
|
||||
else
|
||||
eosio::print("Singleton is empty\n");
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of singleton can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to define a singleton.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* Singleton uses as underlying structure a multi-index table therefore you can [iterate and retrieve data](./how-to-iterate-and-retrieve-a-multi_index-table) from the singleton the same way you would with a multi-index table.
|
||||
@@ -1,76 +0,0 @@
|
||||
---
|
||||
content_title: How to delete data from a multi-index table
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to to delete data from a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
* The [`multi-index::find(...)`](../../reference/Modules/group__multiindex#function-find) method.
|
||||
* The [`multi-index::erase(...)`](../../reference/Modules/group__multiindex#function-erase) method.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index `testab` table instance which stores `user` objects indexed by the primary key which is of type `eosio::name`. Consult the section [How to instantiate a multi-index table](./how-to-instantiate-a-multi-index-table.md) to learn how to set it up.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to implement a `del` action which deletes an user object, identified by its account name, from the multi-index table.
|
||||
|
||||
### 1. Find The User You Want To Delete
|
||||
|
||||
Use the multi-index [`find(...)`](../../reference/Modules/group__multiindex#function-find) method to locate the user object you want to delete. The targeted user is searched based on its account name.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void multi_index_example::del( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Delete The User If Found
|
||||
|
||||
Check to see if the user exists and use [`erase`(...)](../../reference/Modules/group__multiindex#function-erase) method to delete the row from table. Otherwise print an informational message and return.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void multi_index_example::del( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
+ if ( itr == testtab.end() ) {
|
||||
+ printf("User does not exist in table, nothing to delete");
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
+ testtab.erase( itr );
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to delete data from a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can verify if the user object was deleted from the multi-index table.
|
||||
|
||||
```cpp
|
||||
// check if the user was deleted
|
||||
auto itr = testtab.find(user.value);
|
||||
if ( itr == testtab.end() ) {
|
||||
printf("User was deleted successfully.");
|
||||
}
|
||||
else {
|
||||
printf("User was NOT deleted!");
|
||||
}
|
||||
```
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
content_title: How to insert data into a multi-index table
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to insert data into a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
* The [`multi-index::find(...)`](../../reference/Modules/group__multiindex#function-find) method.
|
||||
* The [`multi-index::emplace(...)`](../../reference/Modules/group__multiindex#function-emplace) method.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index `testab` table instance which stores `user` objects indexed by the primary key which is of type `eosio::name`. Consult the section [How to instantiate a multi-index table](./how-to-instantiate-a-multi-index-table.md) to learn how to set it up.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to insert an user object in the `testtab` multi-index table:
|
||||
|
||||
### 1. Verify If The User Already Exists
|
||||
|
||||
Use of the multi-index table iterator to find out if the user object already exists. The targeted user is searched based on its account name.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void multi_index_example::set( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Insert The User If Not Found In Table
|
||||
|
||||
Use the [`emplace`](../../reference/Modules/group__multiindex#function-emplace) method to make the insertion if the user object is not already in the multi-index table. Otherwise print an informational message.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void multi_index_example::set( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
+ if ( itr == testtab.end() ) {
|
||||
+ testtab.emplace( _self, [&]( auto& u ) {
|
||||
+ u.test_primary = user;
|
||||
+ u.secondary = "second"_n;
|
||||
+ u.datum = 0;
|
||||
+ });
|
||||
+ }
|
||||
+ else {
|
||||
+ printf("User already exists.");
|
||||
+ }
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to insert data in a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [iterate and retrieve newly inserted data](./how-to-iterate-and-retrieve-a-multi_index-table) from the multi-index table.
|
||||
@@ -1,185 +0,0 @@
|
||||
---
|
||||
content_title: How to instantiate a multi-index table
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to instantiate a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to instantiate a multi-index table `testtab`.
|
||||
|
||||
### 1. Preparation And Initialization
|
||||
|
||||
Include the `eosio.hpp` header and use the `using` directive to access the `eosio` namespace.
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
```
|
||||
|
||||
### 2. Define The Table Data Structure
|
||||
|
||||
Define the data structure for the multi-index table.
|
||||
|
||||
```cpp
|
||||
struct [[eosio::table]] test_table {
|
||||
};
|
||||
```
|
||||
|
||||
Add the data structure data members. Each data member corresponds to a field of the multi-index table. A primary key is required when defining a multi-index table structure, therefore you need to know which is the multi-index table field that is the primary key for your multi-index table. The corresponding data member for the primary key field must store unique values. In this case it is the `test_primary` data member of type `eosio::name`.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
+ // this data member stores a name for each row of the multi-index table
|
||||
+ name test_primary;
|
||||
+ // additional data stored in table row, e.g. an uint64_t type data
|
||||
+ uint64_t datum;
|
||||
};
|
||||
```
|
||||
|
||||
### 3. Define The Primary Index
|
||||
|
||||
Add the definition of the primary index for the multi-index table. The primary index type must be uint64_t, it must be unique and must be named `primary_key()`, otherwise the compiler (cdt-cpp) will generate an error saying it can not find the field to use as the primary key:
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
+ // mandatory definition for primary key getter
|
||||
+ uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
```
|
||||
|
||||
[[info | Additional indexes information]]
|
||||
| Other, secondary, indexes if they will be defined can have duplicates. You can have up to 16 additional indexes and the field types can be uint64_t, uint128_t, uint256_t, double or long double.
|
||||
|
||||
### 4. Define A Multi-Index Type Alias
|
||||
|
||||
For ease of use, define a type alias `test_table_t` based on the `eosio::multi_index` template type, parametarized with a random name `"testtaba"` and the `test_table` data structure. The names must adhere to `Antelope` account name restrictions.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
+ typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
```
|
||||
|
||||
### 5. Instantiate The Multi-Index Table
|
||||
|
||||
Declare the `testtab` multi-index table as a data member of type `test_table_t`.
|
||||
|
||||
```diff
|
||||
// the data structure which defines each row of the table
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
+ test_table_t testtab;
|
||||
```
|
||||
|
||||
# 6. Initialize The Multi-Index Table Instance
|
||||
|
||||
Initialize the data member `testtab` by passing to its constructor these two values: `receiver` for the `code` parameter and `receiver.value` for the `scope` parameter. These two parameters combined with table name `"testtaba"` provide access to the partition of the RAM cache used by this multi-index table, in this example you will initialize the `testtab` data member in the smart contract constructor
|
||||
|
||||
```diff
|
||||
// contract class constructor
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
// contract base class contructor
|
||||
contract(receiver, code, ds),
|
||||
// instantiate multi-index instance as data member (find it defined below)
|
||||
+ testtab(receiver, receiver.value)
|
||||
{ }
|
||||
```
|
||||
|
||||
Now you have instantiated a multi-index table, and assigned to `testtab` variable, which has a primary index defined for its `test_primary` data member.
|
||||
|
||||
Here is how the definition of a `multi_index_example` contract containing a multi-index table could look like after following all the steps above.
|
||||
|
||||
__multi_index_example.hpp__
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
// multi-index example contract class
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
// contract class constructor
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
// contract base class contructor
|
||||
contract(receiver, code, ds),
|
||||
// instantiate multi-index instance as data member (find it defined below)
|
||||
testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
// the row structure of the multi-index table, that is, each row of the table
|
||||
// will contain an instance of this type of structure
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
// the multi-index type definition, for ease of use define a type alias `test_table_t`,
|
||||
// based on the multi_index template type, parametarized with a random name and
|
||||
// the test_table data structure
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
|
||||
// the multi-index table instance declared as a data member of type test_table_t
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set( name user );
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to define and instantiate a multi-index table instance.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [insert data in the multi-index table](./how-to-insert-data-into-a-multi-index-table).
|
||||
* You can [iterate and retrieve data](./how-to-iterate-and-retrieve-a-multi_index-table) from the multi-index table.
|
||||
-167
@@ -1,167 +0,0 @@
|
||||
---
|
||||
content_title: How to iterate and retrieve from multi-index table based on secondary index
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions on how iterate and retrieve data from a multi-index table based on a secondary index defined in the multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
* The [`multi-index::find(...)`](../../reference/Modules/group__multiindex#function-find) method.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index `testab` table instance which stores `user` objects indexed by the primary key which is of type `eosio::name` and a secondary index for data member `secondary` of type `eosio::name` accessible through `by_secondary()` method. Consult the section [How to define a secondary index](./how-to-define-a-secondary-index) to learn how to set it up.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to iterate, retrieve and print data from the `testtab` multi-index table using the secondary index.
|
||||
|
||||
### 1. Define The bysec(...) Action
|
||||
|
||||
Add an action to the definition of the multi-index table which takes as parameter an account name. This action will retrieve the user object stored in the multi-index based on the passed in account name parameter. The action will use the secondary index.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void bysec( name secid );
|
||||
```
|
||||
|
||||
Optionally, for ease of use add the action wrapper definition as well.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void bysec( name secid );
|
||||
|
||||
+using bysec_action = action_wrapper<"bysec"_n, &multi_index_example::bysec>;
|
||||
```
|
||||
|
||||
### 2. Implement The `bysec(...)` Action
|
||||
|
||||
Search for the `user` name in the multi-index table using the secondary index. If found, print out the value of field `datum`. Otherwise raise and error with a custom message. In the contract definition add the following implementation for `print` action:
|
||||
|
||||
```cpp
|
||||
// iterates the multi-index table rows using the secondary index and prints the row's values
|
||||
[[eosio::action]] void multi_index_example::bysec( name secid ) {
|
||||
// access the secondary index
|
||||
auto idx = testtab.get_index<"secid"_n>();
|
||||
// iterate through secondary index
|
||||
for ( auto itr = idx.begin(); itr != idx.end(); itr++ ) {
|
||||
// print each row's values
|
||||
eosio::print_f("Test Table : {%, %, %}\n", itr->test_primary, itr->secondary, itr->datum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Put It All Together
|
||||
|
||||
The full definition and implementation files for the contract should look like this:
|
||||
|
||||
__multi_index_example.hpp__
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
// multi-index example contract class
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
// contract class constructor
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
// contract base class contructor
|
||||
contract(receiver, code, ds),
|
||||
// instantiate multi-index instance as data member (find it defined below)
|
||||
testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
// the row structure of the multi-index table, that is, each row of the table
|
||||
// will contain an instance of this type of structure
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
name secondary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
uint64_t by_secondary( ) const { return secondary.value; }
|
||||
};
|
||||
|
||||
// the multi-index type definition, for ease of use define a type alias `test_table_t`,
|
||||
// based on the multi_index template type, parametarized with a random name, the
|
||||
// test_table data structure, and the secondary index
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
|
||||
// the multi-index table instance declared as a data member of type test_table_t
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set( name user );
|
||||
[[eosio::action]] void print( name user );
|
||||
[[eosio::action]] void bysec( name secid );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
using bysec_action = action_wrapper<"bysec"_n, &multi_index_example::bysec>;
|
||||
};
|
||||
```
|
||||
|
||||
__multi_index_example.cpp__
|
||||
|
||||
```cpp
|
||||
#include <multi_index_example.hpp>
|
||||
|
||||
[[eosio::action]] void multi_index_example::set( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
if ( itr == testtab.end() ) {
|
||||
// user is not found in table, use emplace to insert a new row data structure in table
|
||||
testtab.emplace( _self, [&]( auto& u ) {
|
||||
u.test_primary = user;
|
||||
u.secondary = "second"_n;
|
||||
u.datum = 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[[eosio::action]] void multi_index_example::print( name user ) {
|
||||
// searches for the row that corresponds to the user parameter
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
// asserts if the row was found for user parameter, if fails use the given message
|
||||
check( itr != testtab.end(), "user does not exist in table" );
|
||||
|
||||
// prints the test_primary and datum fields stored for user parameter
|
||||
eosio::print_f("Test Table : {%, %}\n", itr->test_primary, itr->datum);
|
||||
}
|
||||
|
||||
// iterates the multi-index table rows using the secondary index and prints the row's values
|
||||
[[eosio::action]] void multi_index_example::bysec( name secid ) {
|
||||
// access the secondary index
|
||||
auto idx = testtab.get_index<"secid"_n>();
|
||||
|
||||
// iterate through secondary index
|
||||
for ( auto itr = idx.begin(); itr != idx.end(); itr++ ) {
|
||||
// print each row's values
|
||||
eosio::print_f("Test Table : {%, %, %}\n", itr->test_primary, itr->secondary, itr->datum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to iterate and retrieve a multi-index table based on secondary index.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [insert data](./how-to-insert-data-into-a-multi-index-table) into the multi-index table.
|
||||
* You can [delete data](./how-to-delete-data-from-a-multi-index-table) from the multi-index table.
|
||||
-151
@@ -1,151 +0,0 @@
|
||||
---
|
||||
content_title: How to iterate and retrieve from multi-index table
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to iterate and retrieve data from a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
* The [`multi-index::find(...)`](../../reference/Modules/group__multiindex#function-find) method.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index `testab` table instance which stores `user` objects indexed by the primary key which is of type `eosio::name`. Consult the section [How to instantiate a multi-index table](./how-to-instantiate-a-multi-index-table) to learn how to set it up.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to iterate, retrieve and print data from the `testtab` multi-index table.
|
||||
|
||||
### 1. Define The print(...) Action
|
||||
|
||||
Add a `print` action to the `testtab` multi-index table. The `print` action takes an account name as a parameter.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void print( name user );
|
||||
```
|
||||
|
||||
Optionally, for ease of use add the action wrapper definition as well.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
+using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
```
|
||||
|
||||
### 2. Implement The `print(...)` Action
|
||||
|
||||
Search for the `user` name in the multi-index table using the primary index. If found, print out the value of field `datum`. Otherwise raise an error with a custom message. In the contract definition add the following implementation for `print` action:
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void multi_index_example::print( name user ) {
|
||||
// searches for the row that corresponds to the user parameter
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
// asserts if the row was found for user parameter, if fails use the given message
|
||||
check( itr != testtab.end(), "user does not exist in table" );
|
||||
|
||||
// prints the test_primary and datum fields stored for user parameter
|
||||
eosio::print_f("Test Table : {%, %}\n", itr->test_primary, itr->datum);
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Put It All Together
|
||||
|
||||
The full definition and implementation files for the contract should look like this:
|
||||
|
||||
__multi_index_example.hpp__
|
||||
|
||||
```cpp
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
// multi-index example contract class
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
// contract class constructor
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds ) :
|
||||
// contract base class contructor
|
||||
contract(receiver, code, ds),
|
||||
// instantiate multi-index instance as data member (find it defined below)
|
||||
testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
// the row structure of the multi-index table, that is, each row of the table
|
||||
// will contain an instance of this type of structure
|
||||
struct [[eosio::table]] test_table {
|
||||
// this data member stores a name for each row of the multi-index table
|
||||
name test_primary;
|
||||
// additional data stored in table row
|
||||
uint64_t datum;
|
||||
// mandatory definition for primary key getter
|
||||
uint64_t primary_key( ) const { return test_primary.value; }
|
||||
};
|
||||
|
||||
// the multi-index type definition, for ease of use define a type alias `test_table_t`,
|
||||
// based on the multi_index template type, parametarized with a random name and
|
||||
// the test_table data structure
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table> test_table_t;
|
||||
|
||||
// the multi-index table instance declared as a data member of type test_table_t
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set( name user );
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
__multi_index_example.cpp__
|
||||
|
||||
```cpp
|
||||
#include <multi_index_example.hpp>
|
||||
|
||||
[[eosio::action]] void multi_index_example::set( name user ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
if ( itr == testtab.end() ) {
|
||||
// user is not found in table, use emplace to insert a new row data structure in table
|
||||
testtab.emplace( _self, [&]( auto& u ) {
|
||||
u.test_primary = user;
|
||||
u.secondary = "second"_n;
|
||||
u.datum = 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[[eosio::action]] void multi_index_example::print( name user ) {
|
||||
// searches for the row that corresponds to the user parameter
|
||||
auto itr = testtab.find(user.value);
|
||||
|
||||
// asserts if the row was found for user parameter, if fails use the given message
|
||||
check( itr != testtab.end(), "user does not exist in table" );
|
||||
|
||||
// prints the test_primary and datum fields stored for user parameter
|
||||
eosio::print_f("Test Table : {%, %}\n", itr->test_primary, itr->datum);
|
||||
}
|
||||
```
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to iterate and retrieve a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [insert data](./how-to-insert-data-into-a-multi-index-table) into the multi-index table.
|
||||
* You can [delete data](./how-to-delete-data-from-a-multi-index-table) from the multi-index table.
|
||||
@@ -1,92 +0,0 @@
|
||||
---
|
||||
content_title: How to modify data in a multi-index table
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to modify data in a multi-index table.
|
||||
|
||||
## Reference
|
||||
|
||||
See the following code reference:
|
||||
|
||||
* The [`multi-index`](../../reference/Classes/classeosio_1_1multi__index) class.
|
||||
* The [`multi-index::modify(...)`](../../reference/Modules/group__multiindex#function-modify) method.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A multi-index `testab` table instance which stores `user` objects indexed by the primary key which is of type `eosio::name`. Consult the section [How to instantiate a multi-index table](./how-to-instantiate-a-multi-index-table) to learn how to set it up.
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to modify data in the `testtab` multi-index table.
|
||||
|
||||
### 1. Define The mod(...) Action
|
||||
|
||||
Add a `mod` action to the `testtab` multi-index table. The `mod` action takes as input parameters a `user` of type `eosio::name` and a `value` of type `uint32_t`. The `mod` action updates the `user` object `datum` data member with the `uint32_t` value.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void mod( name user, uint32_t value );
|
||||
```
|
||||
|
||||
Optionally, for ease of use add the action wrapper definition as well.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void mod( name user, uint32_t value );
|
||||
|
||||
+using mod_action = action_wrapper<"mod"_n, &multi_index_example::mod>;
|
||||
```
|
||||
|
||||
### 2. Find The User You Want To Modify
|
||||
|
||||
Use the multi-index [`find(...)`](../../reference/Modules/group__multiindex#function-find) method to locate the user object you want to modify. The targeted user is searched based on its account name.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void multi_index_example::mod( name user, uint32_t value ) {
|
||||
auto itr = testtab.find(user.value);
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Yield Error If User Not Found
|
||||
|
||||
If the `user` object you want to update is not found then raise an error message by using the [`eosio::check`](../../reference/Namespaces/namespaceeosio#function-check) method.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void multi_index_example::mod( name user, uint32_t value ) {
|
||||
auto itr = testtab.find(user.value);
|
||||
+ check( itr != testtab.end(), "user does not exist in table" );
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Update The User If Found
|
||||
|
||||
If the `user` object you want to update is found, the [`eosio::check`](../../reference/Namespaces/namespaceeosio#function-check) method will do nothing and the iterator `itr` will be pointing at the object which you want to update. Use the [`multi-index::modify(...)`](../../reference/Modules/group__multiindex#function-modify) method to update the user object `datum` data member with the `value` parameter.
|
||||
|
||||
```diff
|
||||
[[eosio::action]] void multi_index_example::mod( name user, uint32_t value ) {
|
||||
// check if the user already exists
|
||||
auto itr = testtab.find(user.value);
|
||||
check( itr != testtab.end(), "user does not exist in table" );
|
||||
|
||||
+ testtab.modify( itr, _self, [&]( auto& row ) {
|
||||
+ row.datum = value;
|
||||
+ });
|
||||
}
|
||||
```
|
||||
|
||||
Now you have implemented a new action `mod`. Call `mod` to update the `datum` data member for the user object identified by the `user` name parameter.
|
||||
|
||||
[[info | Full example location]]
|
||||
| A full example project demonstrating the instantiation and usage of multi-index table can be found [here](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to modify data in a multi-index table.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* You can [insert data](./how-to-insert-data-into-a-multi-index-table) into the multi-index table.
|
||||
* You can [delete data](./how-to-delete-data-from-a-multi-index-table) from the multi-index table.
|
||||
@@ -1,94 +0,0 @@
|
||||
---
|
||||
content_title: How to create and use action wrappers
|
||||
link_text: "How to create and use action wrappers"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This guide provides instructions to create and use an action wrapper in a smart contract.
|
||||
|
||||
## Code Reference
|
||||
|
||||
See the following code reference guide for action wrapper:
|
||||
|
||||
* [eosio::action_wrapper](../reference/Classes/structeosio_1_1action__wrapper).
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A smart contract named `multi_index_example`, defined in file `multi_index_example.hpp`.
|
||||
* An action `mod` which modifies the integer value `n` stored for row with key `user`.
|
||||
|
||||
Refer to the following reference implementation for your starting point:
|
||||
|
||||
```cpp
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
// ...
|
||||
[[eosio::action]] void mod( name user, uint32_t n );
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to create and use `mod_action` action wrapper for the existing `mod` action in the smart contract:
|
||||
|
||||
1. [Define the action wrapper](#1-define-the-action-wrapper)
|
||||
2. [Use the action wrapper](#2-use-the-action-wrapper)
|
||||
* [2.1. Include Header File](#21-include-header-file)
|
||||
* [2.2. Instantiate The Action Wrapper](#22-instantiate-the-action-wrapper)
|
||||
* [2.3. Send The Action Using The Action Wrapper](#23-send-the-action-using-the-action-wrapper)
|
||||
|
||||
### 1. Define The Action Wrapper
|
||||
|
||||
To define an action wrapper for the `mod` action, use the `eosio::action_wrapper` template, with the first parameter the action name as a `eosio::name` and second parameter as the reference to the action method:
|
||||
|
||||
```diff
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
// ...
|
||||
[[eosio::action]] void mod(name user);
|
||||
// ...
|
||||
+ using mod_action = action_wrapper<"mod"_n, &multi_index_example::mod>;
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Use The Action Wrapper
|
||||
|
||||
#### 2.1. Include Header File
|
||||
|
||||
To use the action wrapper, you have to include the header file where the action wrapper is defined:
|
||||
|
||||
```cpp
|
||||
#include <multi_index_example.hpp>
|
||||
```
|
||||
|
||||
#### 2.2. Instantiate The Action Wrapper
|
||||
|
||||
Instantiate the `mod_action`. Specify the contract to send the action to as the first argument. In this case, it is assumed the contract is deployed to `multiindexex` account. Specify a structure with two parameters: the self account, obtained by `get_self()` call, and the `active` permission (you can modify these two parameters based on your requirements).
|
||||
|
||||
```diff
|
||||
#include <multi_index_example.hpp>
|
||||
|
||||
+multi_index_example::mod_action modaction("multiindexex"_n, {get_self(), "active"_n});
|
||||
```
|
||||
|
||||
#### 2.3. Send The Action Using The Action Wrapper
|
||||
|
||||
Call the `send` method of the action wrapper and pass in the `mod` action's parameters as positional arguments:
|
||||
|
||||
```diff
|
||||
#include <multi_index_example.hpp>
|
||||
|
||||
multi_index_example::mod_action modaction("multiindexex"_n, {get_self(), 1});
|
||||
|
||||
+modaction.send("eostutorial"_n, 1);
|
||||
```
|
||||
|
||||
For a full example see the [multi_index example contract](https://github.com/AntelopeIO/cdt/blob/main/examples/multi_index_example).
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to create and use action wrapper in a smart contract.
|
||||
@@ -1,80 +0,0 @@
|
||||
---
|
||||
content_title: How-To Return Values From Action
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This how-to demonstrates how a smart contract developer implements return values from an action.
|
||||
|
||||
In order to accomplish this, use the `return` statement and pass the desired returned value, which can be of any C++ primitive type, a standard library type, or a user defined type.
|
||||
|
||||
## Before you begin
|
||||
|
||||
Make sure you have the following prerequisites in place:
|
||||
|
||||
* An Antelope development environment, for details consult the [Documentation Portal](https://docs.eosnetwork.com/docs/latest/).
|
||||
* A smart contract, let’s call it `smrtcontract`, which builds without error.
|
||||
* An action, let’s call it `checkwithrv`, from which you want to return a value of a user defined type `action_response`.
|
||||
|
||||
Refer to the following reference implementation for your starting point:
|
||||
|
||||
```cpp
|
||||
struct action_response
|
||||
{
|
||||
uint16_t id;
|
||||
std::pair<int, std::string> status;
|
||||
};
|
||||
|
||||
class [[eosio::contract]] smrtcontract : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
|
||||
[[eosio::action]]
|
||||
action_response checkwithrv( name nm );
|
||||
};
|
||||
```
|
||||
|
||||
## Procedure
|
||||
|
||||
Complete the following steps to return an instance of `action_response` from the `checkwithrv` action:
|
||||
|
||||
1. Create an instance of the `action_response` C++ user defined structure.
|
||||
2. Initialize its data members based on the action’s business logic.
|
||||
3. Use `return` statement and pass as a parameter the instance created and initialized in previous steps.
|
||||
|
||||
```cpp
|
||||
[[eosio::action]]
|
||||
action_response smrtcontract::checkwithrv( name nm ) {
|
||||
print_f("Name : %\n", nm);
|
||||
|
||||
// create instance of the action response structure
|
||||
action_response results;
|
||||
|
||||
// initialize its data members
|
||||
results.id = 1;
|
||||
if (nm == "hello"_n) {
|
||||
results.status = {0, "Validation has passed."};
|
||||
}
|
||||
else {
|
||||
results.status = {1, "Input param `name` not equal to `hello`."};
|
||||
}
|
||||
|
||||
// use return statement
|
||||
return results; // the `set_action_return_value` intrinsic is invoked automatically here
|
||||
}
|
||||
```
|
||||
|
||||
For a complete example of a smart contract that implements an action which returns a value see the [hello example contract](https://github.com/AntelopeIO/cdt/blob/main/examples/hello).
|
||||
|
||||
## Next Steps
|
||||
|
||||
* Compile the smart contract and deploy it to the Antelope testnet or any Antelope based blockchain.
|
||||
* Use the `cleos` command to send the `checkwithrv` action to the smart contract and observe the returned value in the `cleos` output.
|
||||
* Use other means (e.g. programmatically) to send the `checkwithrv` action to the smart contract and observe the returned value in the action trace.
|
||||
|
||||
[[info | Returned values from actions availability]]
|
||||
The action return values are only available to clients sending the action via the RPC API. Currently, there is no support for an inline action to be able to use the return value, because inline actions don't execute synchronously.
|
||||
|
||||
## Summary
|
||||
|
||||
In conclusion, the above instructions show how to return values from actions.
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
content_title: Naming conventions
|
||||
---
|
||||
|
||||
When implementing Antelope smart contracts and when storing data in an Antelope blockchain, it is important to follow the established Antelope conventions for naming accounts, actions, tables, etc.
|
||||
|
||||
## Antelope names
|
||||
|
||||
* Applies to all Antelope encoded names (accounts, actions, tables, etc.)
|
||||
* Encoded as a 64-bit unsigned integer (`uint64_t`) on the blockchain.
|
||||
* First 12 characters, if any, encoded in `base32` using characters: `.`, `1-5`, `a-z`
|
||||
* 13th character, if applicable, encoded in `base16` using characters: `.`, `1-5`, `a-j`
|
||||
|
||||
### Standard account names
|
||||
|
||||
* Must contain exactly 12 characters from the `base32` set: `.`, `1-5`, `a-z`
|
||||
* 13th character not allowed or lesser than 12 characters
|
||||
* Must start with a lowercase letter `a-z`
|
||||
* Must not end in a dot `.` character
|
||||
|
||||
### Non-standard account names
|
||||
|
||||
* May contain between 1 and 12 characters from the `base32` set: `.`, `1-5`, `a-z`
|
||||
* 13th character not allowed in account name
|
||||
* Must not end in a dot `.` character
|
||||
|
||||
### Table, struct, class, function (action) names
|
||||
|
||||
* May contain between 1 and 13 characters.
|
||||
* First 12 characters, if any, from the `base32` set: `.`, `1-5`, `a-z`
|
||||
* 13th character, if any, from the `base16` set: `.`, `1-5`, `a-j`
|
||||
|
||||
### Format
|
||||
|
||||
The figure below showcases a 12 character string formatted into a 64-bit unsigned integer. Note: the 13th char, if any, contains 2<sup>4</sup> = 16 cases per 1 digit (char): 1 (`.`) + 5 (`1-5`) + 10 (`a-j`).
|
||||
|
||||

|
||||
|
||||
## Encoding and decoding
|
||||
|
||||
Antelope name objects can be created, encoded, and decoded via the `eosio::name` class.
|
||||
|
||||
1. To encode an `std::string` into an Antelope name object, use the appropriate `eosio::name()` constructor.
|
||||
2. To encode a `char *` string literal into an Antelope name object, you can also use the `""_n` operator.
|
||||
3. To decode an Antelope name object into an `std::string`, use the `eosio::to_string()` function.
|
||||
|
||||
### Examples
|
||||
|
||||
```cpp
|
||||
auto eosio_user = eosio::name{user}; //encodes user string to eosio::name object
|
||||
auto user_str = user_name_obj.to_string(); //decodes eosio::name obj to string
|
||||
auto standard_account = "standardname"_n; //encodes literal string to eosio::name
|
||||
auto non_standard_account = ".standard"_n; //encodes literal string to eosio::name
|
||||
```
|
||||
@@ -1,23 +0,0 @@
|
||||
---
|
||||
content_title: Resource planning
|
||||
---
|
||||
|
||||
How much RAM do I need? This is not an easy question to answer, and there's really no perfect answer for it. You need to find out by measuring your contracts' actions and by planning accordingly based on your predictions on how fast and how much your blockchain application will grow. If your blockchain application growth is requiring more storage capacity you'll need to buy more RAM. If it requires more actions to be executed in the 3 day window (the staking time) you need to stake more tokens for CPU bandwidth. If your blockchain application growth means more actions will be stored on the blockchain then you also will need to expand your NET bandwidth maximum limit by staking more tokens for NET bandwidth.
|
||||
|
||||
*Ok, you say, but how much?*
|
||||
|
||||
You need to test and simulate various business scenarios that apply to your blockchain application and measure their resource usage. Hence, the existence of the public test networks. These allow you to measure how much RAM, CPU, and NET each action consumes, and to measure worst and best case business scenarios. You can then extrapolate and build a fairly good view of your blockchain application's resource needs.
|
||||
|
||||
Once you have a fair idea of how your contract, blockchain application, and user base are consuming blockchain resources on a public test-net you can estimate what you'll need to start with on any Antelope-based networks, public or private. From that point onward, as with any other application, it is advisable to have monitors that tell you statistics and metrics about your application performance.
|
||||
|
||||
Of course some aspects might differ from network to network, because each network might have altered its system contracts. The Antelope code base is open sourced and it can be tailored to each network's requirements. You need to be aware of these differences and take them into account if this is the case with a network you're testing on.
|
||||
|
||||
The Antelope community is also providing tools that can help you in this endeavor. One example is https://www.eosrp.io
|
||||
Because the RAM price varies and because the CPU and NET bandwidth allocations vary too, as it is explained in the previous section, this tool can help you estimate how much of each resource you can allocate based on a specific amount of tokens and vice-versa.
|
||||
|
||||
Another aspect of resource planning involves making sure your contract is efficient, that is, not consuming resources unnecessarily. Therefore, it is beneficial for you to find answers to the following questions when writing your own smart contracts and blockchain applications:
|
||||
|
||||
* Is your smart contract storing only the information that is necessary to be stored on a blockchain and for the rest is using alternative ways for storing data (e.g. IPFS)?
|
||||
* If you have multiple smart contracts, are they communicating between them too much via inline actions? Could some of the smart contracts be merged into one and thus eliminate the need to spawn inline actions between them, reducing the overall inline actions count and thus resource consumption?
|
||||
* Could you change your smart contracts so that your clients pay for some parts of the RAM used? Recall how originally the addressbook contract was making each new account added to the book pay for the RAM needed to store its individual data?
|
||||
* Or conversely, are you making your clients pay too much RAM or CPU in order to access your contracts' actions, to the point where you are prohibiting their use of your smart contract? Would it be better for your blockchain application's growth and success to take on some of those costs?
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
content_title: Data design and migration
|
||||
---
|
||||
|
||||
Antelope based blockchains allow developers to easily update their smart contract code. However, a few things need to be considered when it comes to data updates and/or migration. The multi-index table API is one of the mechanisms (Key-Value API being the other) for storing and updating blockchain state. The multi-index table API creates and uses data structures in RAM. Once created and deployed on the blockchain there are limitations if you want to update these structures. Below you will find a few approaches to your smart contract data design, updates to this design, and for data migration.
|
||||
|
||||
# How to modify a data structure defined using multi-index table API
|
||||
|
||||
Modifying a deployed multi-index table structure may be done by selecting one of the different strategies outlined below:
|
||||
|
||||
## 1. If you don't mind losing the existing data
|
||||
|
||||
If you don't mind losing the data from the initial table you can follow these two steps:
|
||||
|
||||
1. Erase all records from first table
|
||||
2. Deploy a new contract with modified table structure
|
||||
|
||||
## 2. If you want to keep the existing data
|
||||
|
||||
If you want to keep the existing data there are two ways to do it:
|
||||
|
||||
### 2.1. Using binary extensions
|
||||
|
||||
To learn how to modify the structure using binary extensions read this [tutorial](../09_tutorials/01_binary-extension.md).
|
||||
|
||||
### 2.2. Using ABI variants
|
||||
|
||||
To learn how to modify the structure using ABI variants read this [tutorial](../09_tutorials/02_abi-variants.md).
|
||||
|
||||
### 2.3. Migrate the existing data to a second table
|
||||
|
||||
#### 2.3.1. Migration without downtime, but slower
|
||||
|
||||
1. Create the new version of your multi-index table alongside the old one.
|
||||
2. Transfer data from the old table to the new one. You may do so as part of your normal access pattern, first checking the new table to see if the entry you seek is present and if not, check the original table, and if it's present, migrate it while adding the data for the new field, then remove it from the original table to save RAM costs.
|
||||
3. You must retain both versions of your multi-index table until you have completed this migration, at which point you may update your contract to remove the original version of your multi-index table.
|
||||
|
||||
#### 2.3.2. Migration with downtime, but faster
|
||||
|
||||
If you prefer less code complexity and can accept downtime for your application:
|
||||
|
||||
1. Deploy a version of your contract solely for migration purposes, and run migration transactions on every row of your table until complete. If the first table is big, e.g. has a large number of rows, the transaction time limit could be reached while running the migration transactions. To mitigate this implement the migrate function to move a limited number of rows each time it runs.
|
||||
2. Deploy a new contract using only the new version of the table, at which point, your migration and downtime is complete.
|
||||
|
||||
[[caution]]
|
||||
| Both of the above migration methods require some pre-planning (like the ability to put your contract into a maintenance mode for user feedback)
|
||||
@@ -1,36 +0,0 @@
|
||||
---
|
||||
content_title: Securing your contract
|
||||
---
|
||||
|
||||
## Basic Recommendations
|
||||
|
||||
The following are basic recommendations which can be the foundation for securing your smart contract.
|
||||
|
||||
### 1. Authorization Checks
|
||||
|
||||
The following methods are available in the `Antelope` library and they can be used to implemented authorization checks in your smart contracts:
|
||||
|
||||
- [`has_auth`](../group__action/#function-has_auth)
|
||||
- [`require_auth`](../group__action/#function-require_auth)
|
||||
- [`require_auth2`](../how-to-guides/authorization/how_to_restrict_access_to_an_action_by_user/#3-using-require_auth2)
|
||||
- [`require_recipient`](../group__action/#function-require_recipient)
|
||||
|
||||
### 2. Resource Management
|
||||
|
||||
Understand how each of your contracts' actions is impacting the RAM, CPU, and NET consumption, and which account ends up paying for these resources.
|
||||
|
||||
### 3. Secure by Default
|
||||
|
||||
Have a solid and comprehensive development process that includes security considerations from day one of the product planning and development.
|
||||
|
||||
### 4. Continuous Integration And Continuous Delivery
|
||||
|
||||
Test your smart contracts with every update announced for the blockchain you have deployed to. To ease your work, automate the testing as much as possible so you can run them often, and improve them periodically.
|
||||
|
||||
### 5. Security Audits
|
||||
|
||||
Conduct independent smart contract audits, at least two from different organizations.
|
||||
|
||||
### 6. Bug Bounties
|
||||
|
||||
Host periodic bug bounties on your smart contracts and keep a continuous commitment to reward real security problems reported at any time.
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
content_title: Error handling
|
||||
---
|
||||
|
||||
Contracts can use `uint64_t` error codes as an alternative (and shorter) means of signaling error conditions, as opposed to string error messages. However, Antelope and CDT reserve certain ranges of the `uint64_t` value space for their own purposes. Contract developers must be aware of the following ranges and restrictions:
|
||||
|
||||
1. $0 - 4,999,999,999,999,999,999$:
|
||||
Available for contract developers to assign error codes specific to their contracts.
|
||||
|
||||
2. $5,000,000,000,000,000,000 - 7,999,999,999,999,999,999$:
|
||||
Reserved for the CDT compiler to allocate as appropriate. Although the WASM code generated by the CDT compiler may use error code values that were automatically generated from within this range, the error codes in this range are meant to have meaning specific to the particular compiled contract (the meaning would typically be conveyed through the mapping between the error code value and strings in the associated generated ABI file).
|
||||
|
||||
3. $8,000,000,000,000,000,000 - 9,999,999,999,999,999,999$:
|
||||
Reserved for the CDT compiler to allocate as appropriate. The error codes in this range are not specific to any contract but rather are used to convey general runtime error conditions associated with the generated code by CDT.
|
||||
|
||||
4. $10,000,000,000,000,000,000 - 18,446,744,073,709,551,615$:
|
||||
Reserved by the Antelope protocol to represent protocol-level error conditions. Antelope will actually enforce this by restricting the ability for `eosio_assert_code` to be used to fail with error code values used within this range.
|
||||
|
||||
Therefore, contract developers should only reserve error codes from the first range above to use in their contracts.
|
||||
@@ -1,546 +0,0 @@
|
||||
---
|
||||
content_title: "Understanding ABI Files"
|
||||
link_text: "Understanding ABI Files"
|
||||
---
|
||||
## Introduction
|
||||
|
||||
ABI files can be generated using the `cdt-cpp` utility provided by CDT. However, there are several situations that may cause ABI's generation to malfunction or fail altogether. Advanced C++ patterns can trip it up and custom types can sometimes cause issues for ABI generation. For this reason, it's **imperative** you understand how ABI files work, so you can debug and fix if and when necessary.
|
||||
|
||||
## What is an ABI
|
||||
|
||||
The Application Binary Interface (ABI) is a JSON-based description on how to convert user actions between their JSON and Binary representations. The ABI also describes how to convert the database state to/from JSON. Once you have described your contract via an ABI then developers and users will be able to interact with your contract seamlessly via JSON.
|
||||
|
||||
[[warning | Security Note]]
|
||||
| ABI can be bypassed when executing transactions. Messages and actions passed to a contract do not have to conform to the ABI. The ABI is a guide, not a gatekeeper.
|
||||
|
||||
## Create an ABI File
|
||||
|
||||
Start with an empty ABI, for exemplification we will work based on the `eosio.token` therefore name it `eosio.token.abi`:
|
||||
|
||||
```text
|
||||
{
|
||||
"version": "eosio::abi/1.0",
|
||||
"types": [],
|
||||
"structs": [],
|
||||
"actions": [],
|
||||
"tables": [],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": [],
|
||||
"___comment" : ""
|
||||
}
|
||||
```
|
||||
|
||||
## Types
|
||||
|
||||
An ABI enables any client or interface to interpret and even generate a GUI for your contract. For this to work consistently, describe the custom types that are used as a parameter in any public action or struct that needs to be described in the ABI.
|
||||
|
||||
[[info | Built-in Types]]
|
||||
| Antelope implements a number of custom built-ins. Built-in types don't need to be described in an ABI file. If you would like to familiarize yourself with Antelope's built-ins, they are defined [here](https://github.com/AntelopeIO/leap/blob/6817911900a088c60f91563995cf482d6b380b2d/libraries/chain/abi_serializer.cpp#L88-L129)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"new_type_name": "name",
|
||||
"type": "name"
|
||||
}
|
||||
```
|
||||
The ABI now looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "eosio::abi/1.1",
|
||||
"types": [{
|
||||
"new_type_name": "name",
|
||||
"type": "name"
|
||||
}],
|
||||
"structs": [],
|
||||
"actions": [],
|
||||
"tables": [],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": []
|
||||
}
|
||||
```
|
||||
|
||||
## Structs
|
||||
|
||||
Structs that are exposed to the ABI also need to be described. By looking at eosio.token.hpp, it can be quickly determined which structs are utilized by public actions. This is particularly important for the next step.
|
||||
|
||||
A struct's object definition in JSON looks like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue", //The name
|
||||
"base": "", //Inheritance, parent struct
|
||||
"fields": [] //Array of field objects describing the struct's fields.
|
||||
}
|
||||
```
|
||||
## Fields
|
||||
|
||||
```json
|
||||
{
|
||||
"name":"", // The field's name
|
||||
"type":"" // The field's type
|
||||
}
|
||||
```
|
||||
In the `eosio.token` contract, there's a number of structs that require definition. Please note, not all of the structs are explicitly defined, some correspond to an actions' parameters. Here's a list of structs that require an ABI description for the `eosio.token` contract:
|
||||
|
||||
## Implicit Structs
|
||||
|
||||
The following structs are implicit in that a struct was never explicitly defined in the contract. Looking at the [create](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-create) action, you'll find two parameters, `issuer` of type `name ` and `maximum_supply` of type `asset`. For brevity this tutorial won't break down every struct, but applying the same logic, you will end up with the following:
|
||||
|
||||
### [create](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-create)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "create",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"maximum_supply",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
### [issue](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-issue)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"to",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
### [retire](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-retire)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "retire",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [transfer](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-transfer)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"from",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"to",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [close](http://docs.eosnetwork.com/system-contracts/latest/reference/Classes/classeosio_1_1token#function-close)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "close",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"owner",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"symbol",
|
||||
"type":"symbol"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Explicit Structs
|
||||
|
||||
These structs are explicitly defined, as they are a requirement to instantiate a multi-index table. Describing them is no different than defining the implicit structs as demonstrated above.
|
||||
|
||||
### [account](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L120)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "account",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"balance",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Actions
|
||||
|
||||
An action's JSON object definition looks like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer", //The name of the action as defined in the contract
|
||||
"type": "transfer", //The name of the implicit struct as described in the ABI
|
||||
"ricardian_contract": "" //An optional ricardian clause to associate to this action describing its intended functionality.
|
||||
}
|
||||
```
|
||||
Describe the actions of the `eosio.token` contract by aggregating all the public functions described in the `eosio.token` contract's [header file](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp).
|
||||
|
||||
Then describe each action's *type* according to its previously described struct. In most situations, the function name and the struct name will be equal, but are not required to be equal.
|
||||
|
||||
Below is a list of actions that link to their source code with example JSON provided for how each action would be described.
|
||||
|
||||
## [create](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L35-L37)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "create",
|
||||
"type": "create",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [issue](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L45-L46)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue",
|
||||
"type": "issue",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [retire](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L55-L56)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "retire",
|
||||
"type": "retire",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [transfer](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L67-L71)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer",
|
||||
"type": "transfer",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [close](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L96-L97)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "close",
|
||||
"type": "close",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## Tables
|
||||
|
||||
Describe the tables. Here's a table's JSON object definition:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "", //The name of the table, determined during instantiation.
|
||||
"type": "", //The table's corresponding struct
|
||||
"index_type": "", //The type of primary index of this table
|
||||
"key_names" : [], //An array of key names, length must equal length of key_types member
|
||||
"key_types" : [] //An array of key types that correspond to key names array member, length of array must equal length of key names array.
|
||||
}
|
||||
```
|
||||
|
||||
The eosio.token contract instantiates two tables, [accounts](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L134) and [stat](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L135).
|
||||
|
||||
The `accounts` table is an i64 index, based on the [`account` struct](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L120-L124), has a [`uint64` as it's primary key](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L123)
|
||||
|
||||
Here's how the accounts table would be described in the ABI
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "accounts",
|
||||
"type": "account", // Corresponds to previously defined struct
|
||||
"index_type": "i64",
|
||||
"key_names" : ["primary_key"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
```
|
||||
|
||||
The `stat` table is an i64 index, based on the [`currency_stats` struct](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L126-L132), has a [`uint64` as it's primary key](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L131)
|
||||
|
||||
Here's how the stat table would be described in the ABI
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "stat",
|
||||
"type": "currency_stats",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["primary_key"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
```
|
||||
You'll notice the above tables have the same "key name." Naming your keys similar names is symbolic in that it can potentially suggest a subjective relationship. As with this implementation, implying that any given value can be used to query different tables.
|
||||
|
||||
## Putting it all Together
|
||||
|
||||
Finally, an ABI file that accurately describes the `eosio.token` contract.
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "eosio::abi/1.1",
|
||||
"types": [
|
||||
{
|
||||
"new_type_name": "name",
|
||||
"type": "name"
|
||||
}
|
||||
],
|
||||
"structs": [
|
||||
{
|
||||
"name": "create",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"maximum_supply",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "issue",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"to",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "retire",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "close",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"owner",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"symbol",
|
||||
"type":"symbol"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "transfer",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"from",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"to",
|
||||
"type":"name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "account",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"balance",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "currency_stats",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"max_supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"name"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "transfer",
|
||||
"type": "transfer",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "issue",
|
||||
"type": "issue",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "retire",
|
||||
"type": "retire",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "create",
|
||||
"type": "create",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "close",
|
||||
"type": "close",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
],
|
||||
"tables": [
|
||||
{
|
||||
"name": "accounts",
|
||||
"type": "account",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
},
|
||||
{
|
||||
"name": "stat",
|
||||
"type": "currency_stats",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": []
|
||||
}
|
||||
```
|
||||
|
||||
## Cases not Covered by Token Contract
|
||||
|
||||
## Vectors
|
||||
|
||||
When describing a vector in your ABI file, simply append the type with `[]`, so if you need to describe a vector of permission levels, you would describe it like so: `permission_level[]`
|
||||
|
||||
## Struct Base
|
||||
|
||||
It's a rarely used property worth mentioning. You can use **base** ABI struct property to reference another struct for inheritance, as long as that struct is also described in the same ABI file. Base will do nothing or potentially throw an error if your smart contract logic does not support inheritance.
|
||||
|
||||
You can see an example of base in use in the system contract [source code](https://github.com/AntelopeIO/reference-contracts/blob/9d9401e1bd937406b4e2c4f2fd234f22a2d6e3bc/contracts/eosio.system/include/eosio.system/eosio.system.hpp#L141).
|
||||
|
||||
The corresponsing ABI definition would look like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "eosio_global_state",
|
||||
"base": "blockchain_parameters",
|
||||
"fields": [
|
||||
{"name":"max_ram_size", "type":"uint64"},
|
||||
{"name":"total_ram_bytes_reserved", "type":"uint64"},
|
||||
{"name":"total_ram_stake", "type":"int64"},
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Extra ABI Properties Not Covered Here
|
||||
|
||||
A few properties of the ABI specification were skipped here for brevity, however, there is a pending ABI specification that will outline every property of the ABI in its entirety.
|
||||
|
||||
## Ricardian Clauses
|
||||
|
||||
Ricardian clauses describe the intended outcome of a particular actions. It may also be utilized to establish terms between the sender and the contract.
|
||||
|
||||
## ABI Extensions
|
||||
|
||||
A generic "future proofing" layer that allows old clients to skip the parsing of "chunks" of extension data. For now, this property is unused. In the future each extension would have its own "chunk" in that vector so that older clients skip it and newer clients that understand how to interpret it.
|
||||
|
||||
## Maintenance
|
||||
|
||||
Every time you change a struct, add a table, add an action or add parameters to an action, use a new type, you will need to remember to update your ABI file. In many cases failure to update your ABI file will not produce any error.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Table returns no rows
|
||||
|
||||
Check that your table is accurately described in the ABI file. For example, If you use `cleos` to add a table on a contract with a malformed ABI definition and then get rows from that table, you will receive an empty result. `cleos` will not produce an error when adding a row nor reading a row when a contract has failed to properly describe its tables in its ABI.
|
||||
@@ -1,116 +0,0 @@
|
||||
---
|
||||
content_title: ABI/Code generator attributes
|
||||
link_text: ABI/Code generator attributes
|
||||
---
|
||||
|
||||
The new ABI generator tool uses C++11 or GNU style attributes to mark `actions` and `tables`.
|
||||
|
||||
## [[eosio::action]]
|
||||
This attribute marks a method as an action.
|
||||
Example (four ways to declare an action for ABI generation):
|
||||
```cpp
|
||||
// this is the C++11 and greater style attribute
|
||||
[[eosio::action]]
|
||||
void testa( name n ) {
|
||||
// do something
|
||||
}
|
||||
|
||||
// this is the GNU style attribute, this can be used in C code and prior to C++ 11
|
||||
__attribute__((eosio_action))
|
||||
void testa( name n ){
|
||||
// do something
|
||||
}
|
||||
|
||||
struct [[eosio::action]] testa {
|
||||
name n;
|
||||
EOSLIB_SERIALIZE( testa, (n) )
|
||||
};
|
||||
|
||||
struct __attribute__((eosio_action)) testa {
|
||||
name n;
|
||||
EOSLIB_SERIALIZE( testa, (n) )
|
||||
};
|
||||
```
|
||||
|
||||
If your action name is not a valid [Antelope name](../02_naming-conventions.md) you can explicitly specify the name in the attribute ```c++ [[eosio::action("<valid action name>")]]```
|
||||
|
||||
## [[eosio::table]]
|
||||
Example (two ways to declare a table for ABI generation):
|
||||
```cpp
|
||||
struct [[eosio::table]] testtable {
|
||||
uint64_t owner;
|
||||
/* all other fields */
|
||||
};
|
||||
|
||||
struct __attribute__((eosio_table)) testtable {
|
||||
uint64_t owner;
|
||||
/* all other fields */
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"tablename"_n, testtable> testtable_t;
|
||||
```
|
||||
|
||||
If you don't want to use the multi-index you can explicitly specify the name in the attribute ```c++ [[eosio::table("<valid action name>")]]```.
|
||||
|
||||
## [[eosio::contract("ANY_NAME_YOU_LIKE")]]
|
||||
```cpp
|
||||
class [[eosio::contract("ANY_NAME_YOU_LIKE")]] test_contract : public eosio::contract {
|
||||
};
|
||||
```
|
||||
|
||||
The code above will mark this `class` as being an `Antelope` contract, this allows for namespacing of contracts, i.e. you can include headers like `eosio::token` and not have `eosio::token`'s actions/tables wind up in you ABI or generated dispatcher.
|
||||
|
||||
## [[eosio::on_notify("VALID_EOSIO_ACCOUNT_NAME::VALID_EOSIO_ACTION_NAME")]]
|
||||
```cpp
|
||||
[[eosio::on_notify("eosio.token::transfer")]]
|
||||
void on_token_transfer(name from, name to, assert quantity, std::string memo) {
|
||||
// do something on eosio.token contract's transfer action from any account to the account where the contract is deployed.
|
||||
}
|
||||
|
||||
[[eosio::on_notify("*::transfer")]]
|
||||
void on_any_transfer(name from, name to, assert quantity, std::string memo) {
|
||||
// do something on any contract's transfer action from any account to the account where the contract is deployed.
|
||||
}
|
||||
```
|
||||
|
||||
## [[eosio::wasm_entry]]
|
||||
```cpp
|
||||
[[eosio::wasm_entry]]
|
||||
void some_function(...) {
|
||||
// do something
|
||||
}
|
||||
```
|
||||
|
||||
The code above will mark an arbitrary function as an entry point, which will then wrap the function with global constructors (ctors) and global destructors (dtors). This will allow for the CDT toolchain to produce WASM binaries for other ecosystems.
|
||||
|
||||
## [[eosio::wasm_import]]
|
||||
```cpp
|
||||
extern "C" {
|
||||
__attribute__((eosio_wasm_import))
|
||||
void some_intrinsic(...);
|
||||
}
|
||||
```
|
||||
|
||||
The code above will mark a function declaration as being a WebAssembly import. This allows for other compilation modes to specify which functions are import only (i.e. do not link) without having to maintain a secondary file with duplicate declarations.
|
||||
|
||||
## [[eosio::action, eosio::read-only]]
|
||||
The `read-only` attribute marks a method which has been defined as an action as a read-only action.
|
||||
|
||||
Example:
|
||||
|
||||
```cpp
|
||||
[[eosio::action, eosio::read-only]]
|
||||
std::vector<my_struct> get() {
|
||||
std::vector<my_struct> ret;
|
||||
// retrieve blockchain state and populate the ret vector
|
||||
return ret;
|
||||
}
|
||||
```
|
||||
|
||||
Contract actions tagged read-only:
|
||||
* Cannot call insert/update (write) functions on the `Multi-Index API`, nor the `Key Value API`.
|
||||
* Cannot call `deferred transactions`.
|
||||
* Cannot call `inline actions`.
|
||||
* The amount of data returned by read-only queries is limited by the action return value size. By default these are set to 256 bytes by `default_max_action_return_value_size`.
|
||||
|
||||
The `cdt-cpp` and `cdt-cc` tools will generate an error and terminate compilation if an action tagged read-only attempts to call insert/update (write) functions, `deferred transactions` or `inline actions`. However, if the command-line override option `--warn-action-read-only` is used, the `cdt-cpp` and `cdt-cc` tools will issue a warning and continue compilation.
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
content_title: Manually write/edit an ABI file
|
||||
link_text: Manually write/edit an ABI file
|
||||
---
|
||||
|
||||
- Advanced features of the newest version of the ABI will require manual construction of the ABI, and odd and advanced C++ patterns could capsize the generator's type deductions. So having a good knowledge of how to write an ABI should be an essential piece of knowledge of a smart contract writer.
|
||||
- Please refer to [Create an ABI File](00_understanding-abi-files.md#create-an-abi-file) to learn about the different sections of an ABI.
|
||||
|
||||
## Adding Ricardian Contracts and Clauses to ABI
|
||||
- The ABI generator will try to automatically import contracts and clauses into the generated ABI. There are a few caveats to this, one is a strict naming policy of the files and an HTML tag used to mark each Ricardian contract and each clause.
|
||||
- The Ricardian contracts should be housed in a file with the name `<contract name>.contracts.md` and the clauses should be in a file named `<contract name>.clauses.md`.
|
||||
- For each Ricardian contract the header `<h1 class="contract">ActionName</h1>` should be used, as this directs the ABI generator to attach this Ricardian contract to the specified action.
|
||||
- For each Ricardian clause, the header `<h1 class="clause">ClauseID</h1>` should be used, as this directs the ABI generator to the clause id and the subsequent body.
|
||||
- The option `-R` has been added to [`cdt-cpp`](../../03_command-reference/cdt-cpp.md) to add "resource" paths to search from, so you can place these files in any directory structure you like and use `-R<path to file>` in the same vein as `-I` for include paths.
|
||||
- For exemplification see [hello.contracts.md](https://github.com/AntelopeIO/cdt/blob/main/examples/hello/ricardian/hello.contracts.md).
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
content_title: ABI
|
||||
link_text: ABI
|
||||
---
|
||||
|
||||
- [Understanding ABI Files](00_understanding-abi-files.md)
|
||||
- [ABI/Code generator attributes](01_abi-code-generator-attributes-explained.md)
|
||||
- [Manually write/edit an ABI file](02_manually_write_an_ABI_file_explained.md)
|
||||
@@ -1,120 +0,0 @@
|
||||
---
|
||||
content_title: Debugging a smart contract
|
||||
---
|
||||
|
||||
In order to be able to debug your smart contract, you will need to setup a local nodeos node. This local nodeos node can be run as separate private testnet or as an extension of a public testnet. This local node also needs to be run with the contracts-console option on, either `--contracts-console` via the command line or `contracts-console = true` via the config.ini and/or by setting up logging on your running nodeos node and checking the output logs. See below for details on logging.
|
||||
|
||||
When you are creating your smart contract for the first time, it is recommended to test and debug your smart contract on a private testnet first, since you have full control of the whole blockchain and can easily add suitable logging. This enables you to have unlimited amount of eos needed and you can just reset the state of the blockchain whenever you want. When it is ready for production, debugging on the public testnet (or official testnet) can be done by connecting your local nodeos to the public testnet (or official testnet) so you can see the log of the testnet in your local nodeos.
|
||||
|
||||
The concept is the same, so for the following guide, debugging on the private testnet will be covered.
|
||||
|
||||
If you haven't set up your own local nodeos, follow the [DUNE setup guide](https://github.com/AntelopeIO/DUNE#readme). By default, your local nodeos will just run in a private testnet unless you modify the config.ini file to connect with public testnet (or official testnet) nodes.
|
||||
|
||||
# Method
|
||||
|
||||
The main method used to debug smart contract is **Caveman Debugging**. Printing is utilized to inspect the value of a variable and check the flow of the contract. Printing in smart contracts can be done through the Print API. The C++ API is a wrapper for C API and is the recommended API.
|
||||
|
||||
# Print
|
||||
|
||||
Print C API supports the following data type that you can print:
|
||||
- prints - a null terminated char array (string)
|
||||
- prints_l - any char array (string) with given size
|
||||
- printi - 64-bit signed integer
|
||||
- printui - 64-bit unsigned integer
|
||||
- printi128 - 128-bit signed integer
|
||||
- printui128 - 128-bit unsigned integer
|
||||
- printsf - single-precision floating point number
|
||||
- printdf - double encoded as 64-bit unsigned integer
|
||||
- printqf - quadruple encoded as 64-bit unsigned integer
|
||||
- printn - 64 bit names as base32 encoded string
|
||||
- printhex - hex given binary of data and its size
|
||||
|
||||
The Print C++ API wraps some of the above C API by overriding the print() function, so the user doesn't need to determine which specific print function to use. Print C++ API supports:
|
||||
- a null terminated char array (string)
|
||||
- integer (128-bit unsigned, 64-bit unsigned, 32-bit unsigned, signed, unsigned)
|
||||
- base32 string encoded as 64-bit unsigned integer
|
||||
- struct that has print() method
|
||||
|
||||
# Example
|
||||
Here's an example contract for debugging
|
||||
|
||||
## debug.hpp
|
||||
|
||||
```cpp
|
||||
namespace debug {
|
||||
struct foo {
|
||||
account_name from;
|
||||
account_name to;
|
||||
uint64_t amount;
|
||||
void print() const {
|
||||
eosio::print("Foo from ", eosio::name(from), " to ", eosio::name(to), " with amount ", amount, "\n");
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
## debug.cpp
|
||||
|
||||
```cpp
|
||||
#include <debug.hpp>
|
||||
|
||||
extern "C" {
|
||||
|
||||
void apply( uint64_t code, uint64_t action ) {
|
||||
if (code == N(debug)) {
|
||||
eosio::print("Code is debug\n");
|
||||
if (action == N(foo)) {
|
||||
eosio::print("Action is foo\n");
|
||||
debug::foo f = eosio::unpack_action_data<debug::foo>();
|
||||
if (f.amount >= 100) {
|
||||
eosio::print("Amount is larger or equal than 100\n");
|
||||
} else {
|
||||
eosio::print("Amount is smaller than 100\n");
|
||||
eosio::print("Increase amount by 10\n");
|
||||
f.amount += 10;
|
||||
eosio::print(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // extern "C"
|
||||
```
|
||||
## debug.abi
|
||||
|
||||
```json
|
||||
{
|
||||
"structs": [{
|
||||
"name": "foo",
|
||||
"base": "",
|
||||
"fields": {
|
||||
"from": "account_name",
|
||||
"to": "account_name",
|
||||
"amount": "uint64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"actions": [{
|
||||
"action_name": "foo",
|
||||
"type": "foo"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Deploy it and push an action to it. It is assumed you have a `debug` account created and have its key in your wallet.
|
||||
|
||||
```bash
|
||||
$ cdt-cpp -abigen debug.cpp -o debug.wasm
|
||||
$ cleos set contract debug CONTRACT_DIR/debug -p youraccount@active
|
||||
$ cleos push action debug foo '{"from":"inita", "to":"initb", "amount":10}' --scope debug
|
||||
```
|
||||
|
||||
When you check your local `nodeos` node log, you will see the following lines after the above message is sent.
|
||||
|
||||
```
|
||||
Code is debug
|
||||
Action is foo
|
||||
Amount is smaller than 100
|
||||
Increase amount by 10
|
||||
Foo from inita to initb with amount 20
|
||||
```
|
||||
|
||||
There, you can confirm that your message is going to the right control flow and the amount is updated correctly. You might see the above message at least 2 times and that's normal because each transaction is being applied during verification, block generation, and block application.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB |
@@ -1,203 +0,0 @@
|
||||
---
|
||||
content_title: Troubleshooting
|
||||
---
|
||||
|
||||
## When sending an action to the blockchain you get the error below
|
||||
|
||||
```console
|
||||
{
|
||||
"code":500,
|
||||
"message":"Internal Service Error",
|
||||
"error":{
|
||||
"code":3090003,
|
||||
"name":"unsatisfied_authorization",
|
||||
"what":"Provided keys, permissions, and delays do not satisfy declared authorizations",
|
||||
"details":[
|
||||
{
|
||||
"message":"transaction declares authority '{"actor":"account_name","permission":"permission_name"}', but does not have signatures for it under a provided delay of 0 ms, provided permissions [], provided keys ["EOS5ZcMvpgtDMdVtvCFewAQYTyfN6Vqhg4kdgauffx3jiaKaeWfY1"], and a delay max limit of 3888000000 ms",
|
||||
"file":"authorization_manager.cpp",
|
||||
"line_number":524,
|
||||
"method":"check_authorization"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
__Possible solution__: Verify if you did not forget to set code for contract, is it possible that you only set the `abi` for the contract but not the code as well?
|
||||
|
||||
## When sending an action to the blockchain an error similar to the one below is encountered
|
||||
|
||||
```console
|
||||
Error 3015014: Pack data exception
|
||||
Error Details:
|
||||
Unexpected input encountered while processing struct 'action_name_here'
|
||||
```
|
||||
|
||||
__Possible solution__: You did not specify correctly the parameter when sending the action to the blockchain. When no parameter is needed the command should look like the one below
|
||||
|
||||
```sh
|
||||
cleos push action eostutorial1 get '[]' -p eostutorial1@active
|
||||
```
|
||||
|
||||
The command above is one way of sending correctly `get` action with no parameters to the blockchain.
|
||||
|
||||
## When sending an action to the blockchain an error similar to the one below is encountered
|
||||
|
||||
```console
|
||||
error 2019-09-25T07:38:14.859 thread-0 main.cpp:3449 main ] Failed with error: Assert Exception (10)
|
||||
!action_type.empty(): Unknown action action_name in contract eostutorial1
|
||||
```
|
||||
|
||||
__Possible solution__: Verify if the action attribute `[[eosio::action]]` is used when defining and/or declaring the action `action_name` for the contract.
|
||||
|
||||
## When deploying a contract code to the blockchain a similar error with the ones below is encountered
|
||||
|
||||
```console
|
||||
Error 3160010: No abi file found
|
||||
or
|
||||
Error 3160009: No wasm file found
|
||||
```
|
||||
|
||||
__Possible solution__: Verify that `abi` and `wasm` files exist in the directory specified in the `cleos set contract` command, and that their names match the directory name.
|
||||
|
||||
## Action triggers a ram charge which cannot be initiated from a notification
|
||||
|
||||
__Possible solution__: This error happens because the notification action has no authorization to buy the needed RAM. In the context of multi-index tables, there is a table payer and a row payer. Only the contract can modify rows. The contract can create rows with a payer that did not authorize the action if the total amount of ram charged does not increase (e.g. delete a row and add another with the same payer). The table payer can not change until the last row is deleted. For the purposes of billing, a table is identified by the tuple `contract, scope, table`. When you create a row for a `contract, scope, table` tuple that doesn’t exist, you create a table with the same payer. This can outlive the original row which created it, if other rows were created with that combination and this prevents the original payer from getting their ram back. Secondary indexes throw in more complexity since they use the lower 4 bits of the table name, producing additional `contract, scope, table` tuples combinations. Key takeaway: payer is about billing, not access control
|
||||
|
||||
## You successfully re-deployed the contract code, but when you query the table you get the custom message that you coded when the table is not initialized (doesn't exist), or the system error message below in case you do not have code that checks first if table exist
|
||||
|
||||
```console
|
||||
Error 3050003: eosio_assert_message assertion failure
|
||||
Error Details:
|
||||
assertion failure with message: singleton does not exist
|
||||
pending console output:
|
||||
```
|
||||
|
||||
__Possible solution__: It is possible that you changed the table name? That is the first, of `eosio::name` type, parameter which you passed to the `eosio::template` type alias definition. Or did you change the table structure definition at all? If you need to change the table structure definition there are some limitations and a couple of ways to do it which are explained in the [Data Design and Migration](./07_best-practices/04_data-design-and-migration.md) section.
|
||||
|
||||
## You successfully re-deployed the contract code, but when you query the table you get the fields of the row values swapped, that is, it appears the values stored in table rows are the same only that they are swapped between fields/columns
|
||||
|
||||
__Possible solution__: It is possible that you changed the order of the fields the table struct definition? If you change the order of the table struct definition, if the swapped fields have the same type you will see the data in the fields correctly, however if the types of the fields are different the results could be of something undefined. If you need to change the table structure definition there are some limitations and a couple of ways to do it which are explained in the [Data Design and Migration](./07_best-practices/04_data-design-and-migration.md) section.
|
||||
|
||||
## You successfully re-deployed the contract code, but when you query the table you get a parse error, like the one below, or the returned data seems to be garbage
|
||||
|
||||
```console
|
||||
error 2019-09-26T07:05:54.825 thread-0 main.cpp:3449 main ] Failed with error: Parse Error (4)
|
||||
Couldn't parse type_name
|
||||
```
|
||||
|
||||
__Possible solution__: It is possible that you changed the type of the fields for the table struct definition? If you need to change the table structure definition there are some limitations and a couple of ways to do it which are explained in the [Data Design and Migration](./07_best-practices/04_data-design-and-migration.md) section.
|
||||
|
||||
## cdt-cpp process never completes
|
||||
|
||||
__Possible solution__: make sure you have at least 2 cores on the host that executes the cdt-cpp (e.g. docker container, VM, local sub-system)
|
||||
|
||||
## You can not find the `now()` time function, or the result of the `current_time_point` functions are not what you expected them to be
|
||||
|
||||
__Possible solution__: The `now()` function has been replaced by `current_time_point().sec_since_epoch()`, it returns the time in microseconds from 1970 of the `current block` as a time_point. There's also available `current_block_time()` which returns the time in microseconds from 1970 of the `current block` as a `block_timestamp`. Be aware that for time base functions, the assumption is when you call something like `now()` or `current_time()` you will get the exact now/current time, however that is not the case with Antelope, you get __the block time__, and only ever get __the block time__ from the available `sec_since_epoch()` or `current_block_time()` no matter how many times you call it.
|
||||
|
||||
## You successfully re-deployed the contract code, but when you broadcast one of the contracts methods to the blockchain you get below error message
|
||||
|
||||
```console
|
||||
Error 3050004: eosio_assert_code assertion failure
|
||||
Error Details:
|
||||
assertion failure with error code: 8000000000000000000
|
||||
```
|
||||
|
||||
__Possible solution__: If you are referencing a smart contract from another smart contract and each of them have at least one action with the same name you will experience the above error when sending to the blockchain one of those actions, so what you have to do is to make sure the action names between those two contracts are not common.
|
||||
|
||||
## Print statements from smart contract code are not seen in the output
|
||||
|
||||
__Possible solution__: There are a few reasons print statements do not show up in the output. One reason could be because an error occurs, in which case the whole transaction is rolled back and the print statements output is replaced by the error that occurs instead; Another reason is if you are in a loop, iterating through a table's rows for example and for each row you have a print statement that prints also the new line char at the `'\n'` only the chars before the new line char from the first iteration will be printed, nothing else after that, nothing from the second iteration onwards either.
|
||||
|
||||
The below code will print just the first line of the iteration.
|
||||
|
||||
```cpp
|
||||
auto index=0;
|
||||
for (auto& item : testtab)
|
||||
{
|
||||
eosio::print_f("{item %}={%, %, %} \n", ++index, item.test_primary, item.secondary, item.datum);
|
||||
}
|
||||
```
|
||||
|
||||
The below code will print all lines of the iteration separated by `'|'` char.
|
||||
|
||||
```cpp
|
||||
auto index=0;
|
||||
for (auto& item : testtab)
|
||||
{
|
||||
eosio::print_f("{item %}={%, %, %} |", ++index, item.test_primary, item.secondary, item.datum);
|
||||
}
|
||||
```
|
||||
|
||||
## Print statements from smart contract code are not shown in the `expected order`
|
||||
|
||||
__Possible solution__: The key point here is the `expected order` and what you think it should be. Although the Antelope is single threaded, when looking at your smart contract action code implementation, which let's say it has a series of `print` (either `print_f` or `printf`) statements, they might not necessarily be outputted in the order the `apparent` code workflow is. One example is when inline transactions are sent from your smart contract action code, and you expect to see the `print` statements from within the inline action code outputted before the `print` statements made after the inline action `send` statement. For better exemplification let's look at the code below:
|
||||
|
||||
```cpp
|
||||
[[eosio::action]] void multi_index_example::mod( name user, uint64_t n ) {
|
||||
|
||||
// `mod` action implementation code goes here...
|
||||
|
||||
print_f("Output line before the inline send action.")
|
||||
|
||||
singleton_set_action singleton_set("eostutorial1"_n, {get_self(), "active"_n});
|
||||
singleton_set.send(get_self(), n, get_self());
|
||||
|
||||
print_f("Output line after the inline send action.")
|
||||
}
|
||||
```
|
||||
|
||||
The code above has one `print` statement before the `singleton_set.send` and another one after the `singleton_set.send`. If you wrote some more `print` statements in the code that implements the `singleton_set.send` action and expect to see them before the second `print` statement then it is a wrong assumption. The inline actions are broadcasted to the network and they are executed at a different time, asynchronous of the current execution thread of the current `multi_index_example::mod` action, therefor it is impossible to predict when the `print` statements from inline action code will be outputted.
|
||||
|
||||
## Assertion failure while creating an account after eosio.system was installed
|
||||
|
||||
```sh
|
||||
cleos create account eosio bob EOS5HUanbay86UUnr1d4fuBsQ3ksjfgZYoLUVvrYVLy6pj4i8xqVY
|
||||
```
|
||||
|
||||
```console
|
||||
Error 3050003: eosio_assert_message assertion failure
|
||||
Error Details:
|
||||
assertion failure with message: system contract must first be initialized
|
||||
```
|
||||
|
||||
The failure is stating that `eosio.system` `init` action was not called yet. The `init` action is implemented by the `void init(uint64_t, symbol)` function. The first parameter is the version, this should always be `0` for now, until a new version of `init` will be created that handles more information.
|
||||
The second parameter is the system's symbol (i.e. for main net this is `EOS`). If you followed the [BIOS Boot Sequence](https://docs.eosnetwork.com/docs/latest/tutorials/bios-boot-sequence) tutorial and created a system with the default symbol `SYS` then `SYS` shall be used as the system's symbol in the `init` action. It is whatever symbol you as the chain creator want to use in your `Antelope` based blockchain.
|
||||
|
||||
## Backward incompatible change in generating abi for maps
|
||||
|
||||
In CDT version 3.0.1, there has been breaking ABI change in std::map. The change is as follows:
|
||||
|
||||
Old Version (CDT 3.0.0 or earlier):
|
||||
```
|
||||
"fields": [
|
||||
{
|
||||
"name": "key",
|
||||
"type": "<map first type>"
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"type": "<map second type>"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
New Version (CDT 3.0.1 and above):
|
||||
```
|
||||
"fields": [
|
||||
{
|
||||
"name": "first",
|
||||
"type": "<map first type>"
|
||||
},
|
||||
{
|
||||
"name": "second",
|
||||
"type": "<map second type>"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
As a result, if you are using code based on CDT 3.0.0 or earlier, you may encounter errors when upgrading to CDT 3.0.1 and above.
|
||||
An example error message could be: `Error: missing pair_uint64_bytes.first (type=uint64)`.
|
||||
To resolve this issue, you need to update your code to use `first` and `second` to access the elements of `std::map`, instead of the old `key` and `value` identifiers.
|
||||
@@ -1,789 +0,0 @@
|
||||
---
|
||||
content_title: eosio::binary_extension
|
||||
---
|
||||
|
||||
You can find the implementation of `eosio::binary_extension` within the CDT repository in the file [binary_extension.hpp](https://github.com/AntelopeIO/cdt/blob/main/libraries/eosiolib/core/eosio/binary_extension.hpp).
|
||||
|
||||
The primary concern when using this type is when you are adding a new field to a smart contract's data structure that is currently utilized in an `eosio::multi_index` type (AKA a _table_), or when adding a new parameter to an action declaration.
|
||||
|
||||
By wrapping the new field in an `eosio::binary_extension`, you are enabling your contract to be backwards compatible for future use. Note that this new field/parameter **MUST** be appended at the end of a data structure (this is due to implementation details in `eosio::multi_index`, which relies on the `boost::multi_index` type), or at the end of the parameter list in an action declaration.
|
||||
|
||||
If you don't wrap the new field in an `eosio::binary_extension`, the `eosio::multi_index` table will be reformatted in such a way that disallows reads to the former datum; or in an action's case, the function will be un-callable.
|
||||
|
||||
<hr>How the `eosio::binary_extension` type works
|
||||
|
||||
Take a moment to study this smart contract and its corresponding `.abi`.
|
||||
|
||||
This contract not only serves as a good example to the `eosio::binary_extension` type, but can also be used as a gateway for developing smart contracts on the eosio protocol.
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```c++
|
||||
#include <eosio/contract.hpp> // eosio::contract
|
||||
#include <eosio/binary_extension.hpp> // eosio::binary_extension
|
||||
#include <eosio/datastream.hpp> // eosio::datastream
|
||||
#include <eosio/name.hpp> // eosio::name
|
||||
#include <eosio/multi_index.hpp> // eosio::indexed_by, eosio::multi_index
|
||||
#include <eosio/print.hpp> // eosio::print_f
|
||||
|
||||
class [[eosio::contract]] binary_extension_contract : public eosio::contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
binary_extension_contract(eosio::name receiver, eosio::name code, eosio::datastream<const char*> ds)
|
||||
: contract{receiver, code, ds}, _table{receiver, receiver.value}
|
||||
{ }
|
||||
|
||||
[[eosio::action]] void regpkey (eosio::name primary_key); ///< Register primary key.
|
||||
[[eosio::action]] void printbyp(eosio::name primary_key); ///< Print by primary key.
|
||||
[[eosio::action]] void printbys(eosio::name secondary_key); ///< Print by secondary key.
|
||||
[[eosio::action]] void modifyp (eosio::name primary_key, eosio::name n); ///< Modify primary key by primary key.
|
||||
[[eosio::action]] void modifys (eosio::name primary_key, eosio::name n); ///< Modify secondary key by primary key.
|
||||
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
|
||||
using index1 = eosio::indexed_by<"index1"_n, eosio::const_mem_fun<structure, uint64_t, &structure::primary_key>>;
|
||||
using index2 = eosio::indexed_by<"index2"_n, eosio::const_mem_fun<structure, uint64_t, &structure::secondary_key>>;
|
||||
using table = eosio::multi_index<"table"_n, structure, index1, index2>;
|
||||
|
||||
private:
|
||||
table _table;
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```c++
|
||||
#include "binary_extension_contract.hpp"
|
||||
|
||||
using eosio::name;
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
row._secondary_key = "nothin"_n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::printbyp(eosio::name primary_key) {
|
||||
eosio::print_f("`printbyp` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value) };
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; printing.\n", primary_key.to_string());
|
||||
eosio::print_f("{%, %}\n", iter->_primary_key, iter->_secondary_key);
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not printing.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`printbyp` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::printbys(eosio::name secondary_key) {
|
||||
eosio::print_f("`printbys` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index2"_n>()};
|
||||
auto iter {index.find(secondary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index2"_n>().end()) {
|
||||
eosio::print_f("`_secondary_key`: % found; printing.\n", secondary_key.to_string());
|
||||
printbyp(iter->_primary_key);
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_secondary_key`: % not found; not printing.\n", secondary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`printbys` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::modifyp(eosio::name primary_key, name n) {
|
||||
eosio::print_f("`modifyp` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; modifying `_primary_key`.\n", primary_key.to_string());
|
||||
index.modify(iter, _self, [&](auto& row) {
|
||||
row._primary_key = n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not modifying `_primary_key`.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`modifyp` finished executing.\n");
|
||||
}
|
||||
|
||||
[[eosio::action]] void binary_extension_contract::modifys(eosio::name primary_key, name n) {
|
||||
eosio::print_f("`modifys` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()};
|
||||
auto iter {index.find(primary_key.value)};
|
||||
|
||||
if (iter != _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % found; modifying `_secondary_key`.\n", primary_key.to_string());
|
||||
index.modify(iter, _self, [&](auto& row) {
|
||||
row._secondary_key = n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % not found; not modifying `_secondary_key`.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`modifys` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
|
||||
```javascript
|
||||
{
|
||||
"____comment": "This file was generated with eosio-abigen. DO NOT EDIT ",
|
||||
"version": "eosio::abi/1.1",
|
||||
"types": [],
|
||||
"structs": [
|
||||
{
|
||||
"name": "modifyp",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "n",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "modifys",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "n",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "printbyp",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "printbys",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "modifyp",
|
||||
"type": "modifyp",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "modifys",
|
||||
"type": "modifys",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "printbyp",
|
||||
"type": "printbyp",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "printbys",
|
||||
"type": "printbys",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "regpkey",
|
||||
"type": "regpkey",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
],
|
||||
"tables": [
|
||||
{
|
||||
"name": "table",
|
||||
"type": "structure",
|
||||
"index_type": "i64",
|
||||
"key_names": [],
|
||||
"key_types": []
|
||||
}
|
||||
],
|
||||
"ricardian_clauses": [],
|
||||
"variants": []
|
||||
}
|
||||
```
|
||||
|
||||
<hr>
|
||||
|
||||
Take note of the action `regpkey`, and the struct `structure` in `con.hpp` and `con.cpp`; the parts of the contract you will be upgrading.
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```c++
|
||||
[[eosio::action]] void regpkey (eosio::name primary_key);
|
||||
```
|
||||
|
||||
```c++
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```c++
|
||||
[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
row._secondary_key = "nothin"_n;
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
Find below their corresponding sections in the `.abi` files:
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
|
||||
```javascript
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
<hr>Start up a blockchain instance, compile this smart contract, and test it out.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cdt-cpp binary_extension_contract.cpp -o binary_extension_contract.wasm
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: 6c5c7d869a5be67611869b5f300bc452bc57d258d11755f12ced99c7d7fe154c 4160 bytes 729 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000d7600061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60067...
|
||||
# eosio <= eosio::setabi "0000000000ea3055d1020e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Next, push some data to the contract defined.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 3c708f10dcbf4412801d901eb82687e82287c2249a29a2f4e746d0116d6795f0 104 bytes 248 us
|
||||
# eosio <= eosio::regpkey {"primary_key":"eosio.name"}
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`regpkey` executing.
|
||||
`_primary_key`: eosio.name not found; registering.
|
||||
`regpkey` finished executing.
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Finally, read back the data you have just written.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: e9b77d3cfba322a7a3a93970c0c883cb8b67e2072a26d714d46eef9d79b2f55e 104 bytes 227 us
|
||||
# eosio <= eosio::printbyp {"primary_key":"eosio.name"}
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`printbyp` executing.
|
||||
`_primary_key`: eosio.name found; printing.
|
||||
{eosio.name, nothin}
|
||||
`printbyp` finished executing.
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
<hr>Upgrade the smart contract by adding a new field to the table and a new parameter to an action while **NOT** wrapping the new field/parameter in an `eosio::binary_extension` type and see what happens:
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void regpkey (eosio::name primary_key, eosio::name secondary_key);
|
||||
-[[eosio::action]] void regpkey (eosio::name primary_key);
|
||||
```
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
+ eosio::name _non_binary_extension_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, name secondary_key) {
|
||||
-[[eosio::action]] void binary_extension_contract::regpkey(name primary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
+ if (secondary_key) {
|
||||
+ row._secondary_key = secondary_key;
|
||||
+ }
|
||||
+ else {
|
||||
row._secondary_key = "nothin"_n;
|
||||
+ }
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
```diff
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
+ },
|
||||
+ {
|
||||
+ "name": "secondary_key",
|
||||
+ "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
+ },
|
||||
+ {
|
||||
+ "name": "_non_binary_extension_key",
|
||||
+ "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Next, upgrade the contract and try to read from table and write to table the original way:
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cdt-cpp binary_extension_contract.cpp -o binary_extension_contract.wasm
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: b8ea485842fa5645e61d35edd97e78858e062409efcd0a4099d69385d9bc6b3e 4408 bytes 664 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000a2660061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60067...
|
||||
# eosio <= eosio::setabi "0000000000ea305583030e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
Error 3050003: eosio_assert_message assertion failure
|
||||
Error Details:
|
||||
assertion failure with message: read
|
||||
```
|
||||
|
||||
Whoops, you aren't able to read the data you've previously written to table.
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name2"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
Error 3015014: Pack data exception
|
||||
Error Details:
|
||||
Missing field 'secondary_key' in input object while processing struct 'regpkey'
|
||||
```
|
||||
|
||||
Whoops, you aren't able to write to table the original way with the upgraded action either.
|
||||
|
||||
<hr>Ok, back up and wrap the new field and the new action parameter in an `eosio::binary_extension` type:
|
||||
|
||||
**binary_extension_contract.hpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void regpkey (eosio::name primary_key. eosio::binary_extension<eosio::name> secondary_key);
|
||||
-[[eosio::action]] void regpkey (eosio::name primary_key, eosio::name secondary_key);
|
||||
```
|
||||
|
||||
```diff
|
||||
struct [[eosio::table]] structure {
|
||||
eosio::name _primary_key;
|
||||
eosio::name _secondary_key;
|
||||
+ eosio::binary_extension<eosio::name> _binary_extension_key;
|
||||
- eosio::name _non_binary_extension_key;
|
||||
|
||||
uint64_t primary_key() const { return _primary_key.value; }
|
||||
uint64_t secondary_key() const { return _secondary_key.value; }
|
||||
};
|
||||
```
|
||||
|
||||
**binary_extension_contract.cpp**
|
||||
|
||||
```diff
|
||||
+[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, binary_extension<name> secondary_key) {
|
||||
-[[eosio::action]] void binary_extension_contract::regpkey(name primary_key, name secondary_key) {
|
||||
eosio::print_f("`regpkey` executing.\n");
|
||||
|
||||
auto index{_table.get_index<"index1"_n>()}; ///< `index` represents `_table` organized by `index1`.
|
||||
auto iter {index.find(primary_key.value) }; ///< Note: the type returned by `index.find` is different than the type returned by `_table.find`.
|
||||
|
||||
if (iter == _table.get_index<"index1"_n>().end()) {
|
||||
eosio::print_f("`_primary_key`: % not found; registering.\n", primary_key.to_string());
|
||||
_table.emplace(_self, [&](auto& row) {
|
||||
row._primary_key = primary_key;
|
||||
if (secondary_key) {
|
||||
+ row._secondary_key = secondary_key.value();
|
||||
- row._secondary_key = secondary_key;
|
||||
}
|
||||
else {
|
||||
row._secondary_key = "nothin"_n;
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
eosio::print_f("`_primary_key`: % found; not registering.\n", primary_key.to_string());
|
||||
}
|
||||
|
||||
eosio::print_f("`regpkey` finished executing.\n");
|
||||
}
|
||||
```
|
||||
|
||||
**binary_extension_contract.abi**
|
||||
```diff
|
||||
{
|
||||
"name": "regpkey",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "secondary_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "structure",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "_primary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
"name": "_secondary_key",
|
||||
"type": "name"
|
||||
},
|
||||
{
|
||||
+ "name": "_binary_extension_key",
|
||||
+ "type": "name$"
|
||||
- "name": "_non_binary_extension_key",
|
||||
- "type": "name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Note the `$` after the types now; this indicates that this type is an `eosio::binary_extension` type field.
|
||||
```diff
|
||||
{
|
||||
"name": "secondary_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
```
|
||||
|
||||
```diff
|
||||
{
|
||||
"name": "_binary_extension_key",
|
||||
+ "type": "name$"
|
||||
- "type": "name"
|
||||
}
|
||||
```
|
||||
|
||||
Now, upgrade the contract again and try to read/write from/to table:
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos set contract eosio ./
|
||||
```
|
||||
|
||||
```
|
||||
Reading WASM from /Users/john.debord/binary_extension_contract/binary_extension_contract.wasm...
|
||||
Publishing contract...
|
||||
executed transaction: 497584d4e43ec114dbef83c134570492893f49eacb555d0cd47d08ea4a3a72f7 4696 bytes 648 us
|
||||
# eosio <= eosio::setcode "0000000000ea30550000cb6a0061736d01000000018f011760000060017f0060027f7f0060037f7f7f017f6000017e60017...
|
||||
# eosio <= eosio::setabi "0000000000ea305581030e656f73696f3a3a6162692f312e310006076d6f646966797000020b7072696d6172795f6b65790...
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio printbyp '{"primary_key":"eosio.name"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 6108f3206e1824fe3a1fdcbc2fe733f38dc07ae3d411a1ccf777ecef56ddec97 104 bytes 224 us
|
||||
# eosio <= eosio::printbyp {"primary_key":"eosio.name"}
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`printbyp` executing.
|
||||
`_primary_key`: eosio.name found; printing.
|
||||
{eosio.name, nothin}
|
||||
`printbyp` finished executing.
|
||||
[(eosio,printbyp)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
```
|
||||
~/binary_extension_contract $ cleos push action eosio regpkey '{"primary_key":"eosio.name2"}' -p eosio
|
||||
```
|
||||
|
||||
```
|
||||
executed transaction: 75a135d1279a9c967078b0ebe337dc0cd58e1ccd07e370a899d9769391509afc 104 bytes 227 us
|
||||
# eosio <= eosio::regpkey {"primary_key":"eosio.name2"}
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT BEGIN =====================
|
||||
`regpkey` executing.
|
||||
`_primary_key`: eosio.name2 not found; registering.
|
||||
`regpkey` finished executing.
|
||||
[(eosio,regpkey)->eosio]: CONSOLE OUTPUT END =====================
|
||||
warning: transaction executed locally, but may not be confirmed by the network yet
|
||||
```
|
||||
|
||||
Nice! The smart contract is now backwards compatible for the future use of its tables and/or actions.
|
||||
|
||||
<hr>
|
||||
|
||||
Just keep these simple rules in mind when upgrading a smart contract.
|
||||
If you are adding a new field to a struct currently in use by a `eosio::multi_index` be **SURE** to:
|
||||
- add the field at the end of the struct,
|
||||
- and wrap the type using an `eosio::binary_extension` type.
|
||||
|
||||
# There are a few restrictions you have to be aware of, and they are outlined below
|
||||
|
||||
Binary extensions only operate correctly in certain locations.
|
||||
|
||||
* ok: a non-embedded struct stored in a row may have binary extensions at its end
|
||||
* ok: an action may use binary extensions to add additional arguments to its end
|
||||
* ok: a struct with binary extensions may be used inside another struct, but only if the inner struct is the last field of the outer struct and the outer struct is allowed to contain binary extensions
|
||||
* not ok: a struct with binary extensions may not be used inside an array
|
||||
* not ok: a struct with binary extensions may not be used as a base of another struct
|
||||
* not ok: fields with types which don't end in `$` following fields with types which do
|
||||
* not ok: `$` used anywhere except in struct field types
|
||||
|
||||
## ABI version string
|
||||
|
||||
`eosio::abi/1.1`
|
||||
|
||||
## ABI Text format
|
||||
|
||||
Types may have a `$` suffix. During binary-to-json conversion, fields with a `$` type don't error out when end-of-data has been reached; instead they're omitted. During json-to-binary conversion, missing fields don't error out as long as no non-missing fields follow in the ABI. This omits the bytes from the output stream.
|
||||
|
||||
e.g.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "my_table_struct",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name": "required_field_1",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "required_field_2",
|
||||
"type": "float32[]"
|
||||
},
|
||||
{
|
||||
"name": "optional_field_3",
|
||||
"type": "float32[]$"
|
||||
},
|
||||
{
|
||||
"name": "optional_field_4",
|
||||
"type": "string$"
|
||||
},
|
||||
]
|
||||
},
|
||||
```
|
||||
|
||||
## JSON representation
|
||||
|
||||
Missing fields aren't included; null isn't used. E.g. all of these are valid JSON representations of `my_table_struct`:
|
||||
|
||||
```json
|
||||
{
|
||||
"required_field_1": "foo",
|
||||
"required_field_2": [1,2,3,4]
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"required_field_1": "foo",
|
||||
"required_field_2": [1,2,3,4],
|
||||
"optional_field_3": [5,6,7,8]
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"required_field_1": "foo",
|
||||
"required_field_2": [1,2,3,4],
|
||||
"optional_field_3": [5,6,7,8],
|
||||
"optional_field_4": "bar"
|
||||
}
|
||||
```
|
||||
|
||||
## ABI Binary format
|
||||
|
||||
`$` can be included in type strings. No other changes.
|
||||
@@ -1,158 +0,0 @@
|
||||
---
|
||||
content_title: ABI variants
|
||||
link_text: ABI variants
|
||||
---
|
||||
|
||||
ABI variants give the flexibility of using more than one type for a defined variable or data member.
|
||||
|
||||
In Antelope, the variants use the standard template library `variant` which was introduced in C++ 17. An instance of `std::variant` at any given time either holds a value of one of its alternative types, or in the case of error - no value. Because of this trait, variants can be used to build the multi-index table structure with flexibility. Used in conjunction with ABI extensions, it allows for modification of the structure of an existing multi-index table, a.k.a. table.
|
||||
|
||||
## Use variant when building the multi-index table the first time
|
||||
|
||||
To define a `variant` for your table structure one example is shown below
|
||||
|
||||
```cpp
|
||||
std::variant<int8_t, uint16_t, uint32_t> variant_field;
|
||||
```
|
||||
|
||||
This defines `variant` which can hold three different types, one at a time though.
|
||||
So the contract interface could look like this:
|
||||
|
||||
```diff
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds )
|
||||
: contract(receiver, code, ds), testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
struct [[eosio::table]] test_table {
|
||||
name test_primary;
|
||||
name secondary;
|
||||
uint64_t datum;
|
||||
+ std::variant<int8_t, uint16_t, uint32_t> variant_field;
|
||||
|
||||
uint64_t primary_key()const { return test_primary.value; }
|
||||
uint64_t by_secondary()const { return secondary.value; }
|
||||
+ std::variant<int8_t, uint16_t, uint32_t> get_variant_field()const {
|
||||
+ return std::visit(
|
||||
+ [](auto&& arg) -> std::variant<int8_t, uint16_t, uint32_t> {
|
||||
+ return arg;
|
||||
+ },
|
||||
+ variant_field);
|
||||
}
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set(name user);
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
Notice above the declaration of the `variant_field` data memember and also the declaration and inline implementation for the `get_variant_field()` accessor for this data member.
|
||||
|
||||
In the future, this allows you the flexibility to store in the `variant_field` three different types of data `int8_t`, `int16_t`, and `int32_t`, and also allows you to add more types in the list of supported types for this field. One important thing to keep in mind is that you can only append at the end of the supported types, you can not modify the existing supported types order nor drop one of them. That means if you want in the next version of your contract to add also type `int32_t` to the supported list types for this field, your contract implementation could look like this:
|
||||
|
||||
```diff
|
||||
#include <eosio/eosio.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds )
|
||||
: contract(receiver, code, ds), testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
struct [[eosio::table]] test_table {
|
||||
name test_primary;
|
||||
name secondary;
|
||||
uint64_t datum;
|
||||
+ std::variant<int8_t, uint16_t, uint32_t, int32_t> variant_field;
|
||||
|
||||
uint64_t primary_key()const { return test_primary.value; }
|
||||
uint64_t by_secondary()const { return secondary.value; }
|
||||
+ std::variant<int8_t, uint16_t, uint32_t, int32_t> get_variant_field()const {
|
||||
+ return std::visit(
|
||||
+ [](auto&& arg) -> std::variant<int8_t, uint16_t, uint32_t, int32_t> {
|
||||
+ return arg;
|
||||
+ },
|
||||
+ variant_field);
|
||||
}
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set(name user);
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
Now you can deploy the contract and it will be backwards compatible with the previous existing multi-index table.
|
||||
|
||||
## Use variant when changing an already deployed multi-index table
|
||||
|
||||
### Preconditions
|
||||
- It is assumed you deployed the contract defined in [this section](../06_how-to-guides/40_multi-index/how-to-instantiate-a-multi-index-table.md) and now you are going to change its table structure.
|
||||
|
||||
To change the existing table structure, you will use the `std::variant` in conjunction with ABI extensions; you can read a tutorial on abi extensions [here](./01_binary-extension.md). You will add another field to the table called `variant_field` which can store either of the following data `int8_t`, `int16_t`, and `int32_t`. You can do it by adding below data member to the table structure:
|
||||
|
||||
```cpp
|
||||
eosio::binary_extension<std::variant<int8_t, uint16_t, uint32_t>> binary_extension_variant_key;
|
||||
```
|
||||
|
||||
Notice, the use of the `eosio::binary_extension` template which wraps the `std::variant` template parameterized with the types you want to support for the new data field. The full contract implementation can look like this:
|
||||
|
||||
```diff
|
||||
#include <eosio/eosio.hpp>
|
||||
#include <eosio/binary_extension.hpp>
|
||||
using namespace eosio;
|
||||
|
||||
class [[eosio::contract]] multi_index_example : public contract {
|
||||
public:
|
||||
using contract::contract;
|
||||
multi_index_example( name receiver, name code, datastream<const char*> ds )
|
||||
: contract(receiver, code, ds), testtab(receiver, receiver.value)
|
||||
{ }
|
||||
|
||||
struct [[eosio::table]] test_table {
|
||||
name test_primary;
|
||||
name secondary;
|
||||
uint64_t datum;
|
||||
+ eosio::binary_extension<std::variant<int8_t, uint16_t, uint32_t>> binary_extension_variant_key;
|
||||
|
||||
uint64_t primary_key()const { return test_primary.value; }
|
||||
uint64_t by_secondary()const { return secondary.value; }
|
||||
+ eosio::binary_extension<std::variant<int8_t, uint16_t, uint32_t>> get_binary_extension_variant_field()const {
|
||||
+ return binary_extension_variant_key;
|
||||
+ }
|
||||
};
|
||||
|
||||
typedef eosio::multi_index<"testtaba"_n, test_table, eosio::indexed_by<"secid"_n, eosio::const_mem_fun<test_table, uint64_t, &test_table::by_secondary>>> test_table_t;
|
||||
|
||||
test_table_t testtab;
|
||||
|
||||
[[eosio::action]] void set(name user);
|
||||
[[eosio::action]] void print( name user );
|
||||
|
||||
using set_action = action_wrapper<"set"_n, &multi_index_example::set>;
|
||||
using print_action = action_wrapper<"print"_n, &multi_index_example::print>;
|
||||
};
|
||||
```
|
||||
|
||||
[[warning | Not recommended warning]]
|
||||
| Be aware, it is not recommend to use `eosio::binary_extension` inside variant definition, this can lead to data corruption unless one is very careful in understanding how these two templates work and how the ABI gets generated!
|
||||
@@ -1,576 +0,0 @@
|
||||
---
|
||||
content_title: Create an ABI File
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This tutorial provides instructions to how to hand-write an ABI file. This should normally not be necessary since `cdt-cpp` can automatically generate an ABI file from your source code if it is properly annotated.
|
||||
|
||||
## Introduction
|
||||
|
||||
The Application Binary Interface (ABI) is a JSON-based description to convert user actions between their JSON and Binary representations. The ABI also describes how to convert the database state to/from JSON. Once you have described your contract via an ABI then developers and users will be able to interact with your contract seamlessly via JSON.
|
||||
|
||||
This tutorial will use the [eosio.token](https://github.com/AntelopeIO/reference-contracts/tree/main/contracts/eosio.token) contract as an example. *eosio.token contract does not cover every possible permutation of an ABI definition.
|
||||
|
||||
To make things easy, we will start with an empty ABI.
|
||||
|
||||
```text
|
||||
|
||||
{
|
||||
"version": "eosio::abi/1.0",
|
||||
"types": [],
|
||||
"structs": [],
|
||||
"actions": [],
|
||||
"tables": [],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": [],
|
||||
"___comment" : ""
|
||||
}
|
||||
```
|
||||
|
||||
## Types
|
||||
|
||||
An ABI enables any client or interface to interpret and even generate an GUI for you contract. For this to work in a consistent manner, we'll need to describe the custom types that are used as a parameter in any public action or struct that we would like to describe in the ABI.
|
||||
|
||||
[[info]]
|
||||
|Built-in Types
|
||||
|
||||
Antelope implements a number of custom built-ins. Built-in types don't need to be described in an ABI file. If you would like to familiarize yourself with Antelope's built-ins, they are defined [here](https://github.com/AntelopeIO/leap/blob/6817911900a088c60f91563995cf482d6b380b2d/libraries/chain/abi_serializer.cpp#L88-L129).
|
||||
|
||||
Using **eosio.token** as an example, the only type that requires a description in the ABI file is `account_name`. The ABI uses "new_type_name" to describe explicit types, in this case `account_name`, and `account_name` is an alias of `name` type.
|
||||
|
||||
So in the ABI file we'll add the following object
|
||||
|
||||
```json
|
||||
{
|
||||
"new_type_name": "account_name",
|
||||
"type": "name"
|
||||
}
|
||||
```
|
||||
|
||||
Our ABI now looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "eosio::abi/1.0",
|
||||
"types": [{
|
||||
"new_type_name": "account_name",
|
||||
"type": "name"
|
||||
}],
|
||||
"structs": [],
|
||||
"actions": [],
|
||||
"tables": [],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": []
|
||||
}
|
||||
```
|
||||
|
||||
## Structs
|
||||
|
||||
We now need to describe the structs of the token contract. By looking at eosio.token.hpp, we can quickly determine which structs are utilized by public actions. This is particularly important for when we describe our actions in the the ABI file in the next step.
|
||||
|
||||
A struct's object definition in JSON looks like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue", //The name
|
||||
"base": "", //Inheritance, parent struct
|
||||
"fields": [] //Array of field objects describing the struct's fields.
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"name":"", // The field's name
|
||||
"type":"" // The field's type
|
||||
}
|
||||
```
|
||||
|
||||
Looking through the `eosio.token` contract, we see a number of structs that require definition. Please note, not all of the structs are explicitly defined, some correspond to an actions' parameters. Here's a list of structs that require an ABI description for the `eosio.token` contract:
|
||||
|
||||
## Implicit Structs
|
||||
|
||||
The following structs are implicit in that a struct was never explicitly defined in the contract. Looking at the [create](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L24) action, you'll find two parameters, `issuer` of type `account_name ` and `maximum_supply` of type `asset`. For brevity this tutorial won't break down every struct, but applying the same logic, you will end up with the following:
|
||||
|
||||
### [create](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L24)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "create",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"maximum_supply",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [issue](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L27)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"to",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [retire](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L29)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "retire",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [transfer](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L31-L34)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"from",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"to",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [close](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L36)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "close",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"owner",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"symbol",
|
||||
"type":"symbol"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Explicit Structs
|
||||
These structs are explicitly defined, as they are a requirement to instantiate a multi-index table. Describing them is no different than defining the implicit structs as demonstrated above.
|
||||
|
||||
### [account](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L43-L47)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "account",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"balance",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### [currency_stats](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L49-L55)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "currency_stats",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"max_supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"account_name"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Actions
|
||||
|
||||
An action's JSON object definition looks like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer", //The name of the action as defined in the contract
|
||||
"type": "transfer", //The name of the implicit struct as described in the ABI
|
||||
"ricardian_contract": "" //An optional ricardian clause to associate to this action describing its intended functionality.
|
||||
}
|
||||
```
|
||||
|
||||
Next, we'll describe the actions of the `eosio.token` contract by aggregating all the public functions describe in the `eosio.token` contract's [header file](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L24-L36). We'll then describe each action's *type* to their previously described struct. In most situations, the function name and the struct name will be equal, but are not required to be equal.
|
||||
|
||||
Below is a list of actions that link to their source code with example JSON provided for how each action would be described.
|
||||
|
||||
## [create](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L24-L25)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "create",
|
||||
"type": "create",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [issue](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L27)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "issue",
|
||||
"type": "issue",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [retire](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L31-L34)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "retire",
|
||||
"type": "retire",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [transfer](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L31-L34)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "transfer",
|
||||
"type": "transfer",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
## [close](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L36)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "close",
|
||||
"type": "close",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
```
|
||||
|
||||
You will notice we previously described all of these in the "structs" array of the ABI definition.
|
||||
|
||||
## Tables
|
||||
|
||||
Finally, we need to describe our tables. Here's a table's JSON object definition:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "", // The name of the table, determined during instantiation.
|
||||
"type": "", // The table's corresponding struct
|
||||
"index_type": "", // The type of primary index of this table
|
||||
"key_names" : [], // An array of key names, length must equal length of key_types member
|
||||
"key_types" : [] // An array of key types that correspond to key names array member, length of array must equal length of key names array.
|
||||
}
|
||||
```
|
||||
|
||||
The eosio.token contract instantiates two tables, [accounts](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L57) and [stat](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L58).
|
||||
|
||||
The accounts table is an i64 index, based on the [`account` struct](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L43-L47), has a [`uint64` as it's primary key](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L46) and it's key been arbitrarily named "currency".
|
||||
|
||||
Here's how the accounts table would be described in the ABI
|
||||
|
||||
```text
|
||||
{
|
||||
"name": "accounts",
|
||||
"type": "account", // Corresponds to previously defined struct
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
```
|
||||
|
||||
The stat table is an i64 index, based on the [`currenct_stats` struct](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L49-L55), has a [`uint64` as it's primary key](https://github.com/AntelopeIO/reference-contracts/blob/main/contracts/eosio.token/include/eosio.token/eosio.token.hpp#L54) and it's key been arbitrarily named "currency"
|
||||
|
||||
Here's how the stat table would be described in the ABI
|
||||
|
||||
```text
|
||||
{
|
||||
"name": "stat",
|
||||
"type": "currency_stats",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
```
|
||||
|
||||
You'll notice the above tables have the same "key name." Naming your keys similar names is symbolic in that it can potentially suggest a subjective relationship. As with this implementation, implying that any given value can be used to query different tables.
|
||||
|
||||
## Putting it all Together
|
||||
|
||||
Finally, once all the pieces are strewn together, we have ourselves a ABI file that accurately describes the `eosio.token` contract.
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "eosio::abi/1.0",
|
||||
"types": [
|
||||
{
|
||||
"new_type_name": "account_name",
|
||||
"type": "name"
|
||||
}
|
||||
],
|
||||
"structs": [
|
||||
{
|
||||
"name": "create",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"maximum_supply",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "issue",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"to",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "retire",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "close",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"owner",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"symbol",
|
||||
"type":"symbol"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "transfer",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"from",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"to",
|
||||
"type":"account_name"
|
||||
},
|
||||
{
|
||||
"name":"quantity",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"memo",
|
||||
"type":"string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "account",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"balance",
|
||||
"type":"asset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "currency_stats",
|
||||
"base": "",
|
||||
"fields": [
|
||||
{
|
||||
"name":"supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"max_supply",
|
||||
"type":"asset"
|
||||
},
|
||||
{
|
||||
"name":"issuer",
|
||||
"type":"account_name"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "transfer",
|
||||
"type": "transfer",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "issue",
|
||||
"type": "issue",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "retire",
|
||||
"type": "retire",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "create",
|
||||
"type": "create",
|
||||
"ricardian_contract": ""
|
||||
},
|
||||
{
|
||||
"name": "close",
|
||||
"type": "close",
|
||||
"ricardian_contract": ""
|
||||
}
|
||||
],
|
||||
"tables": [
|
||||
{
|
||||
"name": "accounts",
|
||||
"type": "account",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
},
|
||||
{
|
||||
"name": "stat",
|
||||
"type": "currency_stats",
|
||||
"index_type": "i64",
|
||||
"key_names" : ["currency"],
|
||||
"key_types" : ["uint64"]
|
||||
}
|
||||
],
|
||||
"ricardian_clauses": [],
|
||||
"abi_extensions": []
|
||||
}
|
||||
```
|
||||
|
||||
## Cases not Covered by Token Contract
|
||||
|
||||
### Vectors
|
||||
|
||||
When describing a vector in your ABI file, simply append the type with `[]`, so if you need to describe a vector of permission levels, you would describe it like so: `permission_level[]`
|
||||
|
||||
### Struct Base
|
||||
|
||||
It's a rarely used property worth mentioning. You can use **base** ABI struct property to reference another struct for inheritance, as long as that struct is also described in the same ABI file. Base will do nothing or potentially throw an error if your smart contract logic does not support inheritance.
|
||||
|
||||
You can see an example of base in use in the system contract [source code](https://github.com/AntelopeIO/reference-contracts/blob/9d9401e1bd937406b4e2c4f2fd234f22a2d6e3bc/contracts/eosio.system/include/eosio.system/eosio.system.hpp#L141).
|
||||
|
||||
The corresponsing ABI definition would look like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "eosio_global_state",
|
||||
"base": "blockchain_parameters",
|
||||
"fields": [
|
||||
{"name":"max_ram_size", "type":"uint64"},
|
||||
{"name":"total_ram_bytes_reserved", "type":"uint64"},
|
||||
{"name":"total_ram_stake", "type":"int64"},
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## ABI Properties Not Covered Here
|
||||
|
||||
A few properties of the ABI specification were skipped here for brevity, however, there is a pending ABI specification that will outline every property of the ABI in its entirety.
|
||||
|
||||
## Ricardian Clauses
|
||||
|
||||
Ricardian clauses describe the intended outcome of a particular actions. It may also be utilized to establish terms between the sender and the contract.
|
||||
|
||||
## ABI Extensions
|
||||
|
||||
A generic "future proofing" layer that allows old clients to skip the parsing of "chunks" of extension data. For now, this property is unused. In the future each extension would have its own "chunk" in that vector so that older clients skip it and newer clients that understand how to interpret it.
|
||||
|
||||
## Maintenance
|
||||
|
||||
Every time you change a struct, add a table, add an action or add parameters to an action, use a new type, you will need to remember to update your ABI file. In many cases failure to update your ABI file will not produce any error.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Table returns no rows
|
||||
|
||||
Check that your table is accurately described in the <<glossary:ABI>> file. For example, If you use `cleos` to add a table on a contract with a malformed <<glossary:ABI>> definition and then get rows from that table, you will recieve an empty result. `cleos` will not produce an error when adding a row nor reading a row when a contract has failed to properly describe its tables in its <<glossary:ABI>> File.
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
content_title: Tutorials
|
||||
link_text: Tutorials
|
||||
---
|
||||
|
||||
- [Binary Extension](01_binary-extension.md)
|
||||
- [ABI Variants](02_abi-variants.md)
|
||||
- [Create An ABI File](03_create-an-abi-file.md)
|
||||
@@ -1,13 +0,0 @@
|
||||
# CDT (Contract Development Toolkit)
|
||||
|
||||
Contract Development Toolkit (CDT) is a C/C++ toolchain targeting WebAssembly (WASM) and a set of tools to facilitate development of smart contracts written in C/C++ that are meant to be deployed to an [Antelope](https://github.com/AntelopeIO/) blockchain.
|
||||
|
||||
In addition to being a general purpose WebAssembly toolchain, specific features and optimizations are available to support building Antelope-based smart contracts. This new toolchain is built around [Clang 9](https://github.com/AntelopeIO/cdt-llvm), which means that CDT inherits the optimizations and analyses from that version of LLVM, but as the WASM target is still considered experimental, some optimizations are incomplete or not available.
|
||||
|
||||
## Upgrading
|
||||
|
||||
If you are upgrading to CDT version 3.0 or later from version 1.8.1 (or earlier) of [EOSIO.CDT](https://github.com/EOSIO/eosio.cdt), then please read [EOSIO.CDT to CDT](./04_upgrading/eosio.cdt-to-cdt.md).
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/AntelopeIO/cdt/blob/main/LICENSE)
|
||||
@@ -1,22 +0,0 @@
|
||||
.\" Automatically generated by Pandoc 2.5
|
||||
.\"
|
||||
.TH "CDT\-ABIDIFF" "1" "April 18 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
cdt\-abidiff \- A tool for comparison of two CDT ABI files.
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]cdt\-abidiff <file1.abi> <file2.abi>\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\f[B]cdt\-abidiff\f[R] To report differences with cdt\-abidiff, you only
|
||||
need to pass the two ABI file names as command line arguments.
|
||||
.SH BUGS
|
||||
.PP
|
||||
Please submit bug reports online at
|
||||
https://github.com/AntelopeIO/cdt/issues
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
For more details consult the full documentation and sources
|
||||
https://github.com/AntelopeIO/cdt
|
||||
@@ -1,26 +0,0 @@
|
||||
---
|
||||
title: CDT-ABIDIFF
|
||||
section: 1
|
||||
header: Contract Development Toolkit (CDT)
|
||||
footer: AntelopeIO
|
||||
date: April 18 2023
|
||||
---
|
||||
# NAME
|
||||
cdt-abidiff - A tool for comparison of two CDT ABI files.
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
`cdt-abidiff <file1.abi> <file2.abi>`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
**cdt-abidiff** To report differences with cdt-abidiff, you only need to pass the two ABI file names as command line arguments.
|
||||
|
||||
|
||||
# BUGS
|
||||
|
||||
Please submit bug reports online at https://github.com/AntelopeIO/cdt/issues
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
For more details consult the full documentation and sources https://github.com/AntelopeIO/cdt
|
||||
@@ -1,676 +0,0 @@
|
||||
.\" Automatically generated by Pandoc 2.5
|
||||
.\"
|
||||
.TH "CDT\-CC" "1" "April 14, 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
cdt\-cc \- Antelope smart contract C to WebAssembly compiler
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]cdt\-cc [options] <input file>\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\f[B]cdt\-cc\f[R] Is a C compiler which converts C smart contract code
|
||||
to WebAssemply for execution in Antelope block chain virtual machines.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
\f[B]\f[CB]\-C\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include comments in preprocessed output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-CC\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include comments from within macros in preprocessed output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-D=<name definition>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Define <macro> to <value> (or 1 if <value> omitted)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-U=<name>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Undefine any previous definition of name, either built in or defined with a \-D option
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-E\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run the preprocessor
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-I=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to include search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-L=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to library search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MF=<file>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write depfile output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write depfile containing user and system headers
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MMD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Like \-MD except mention only user header files, not system header files.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MT=<target>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Specify name of main file output in depfile
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-O=<optimization_level>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Optimization level s, 0\-3
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-R=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add the directory dir to the list of directories to be searched for resource files
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-S\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run preprocess and compilation steps
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-W=<warning_name>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable the specified warning.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abi\-version=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Which ABI version to generate
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abigen\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Generate ABI
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abigen_output=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
ABIGEN output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-allow\-names\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Allow creation of name section
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-allow\-sse\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Should not be used, except for build libc
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-c\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run preprocess, compile, and assemble steps
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-contract=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Contract name
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print macro definitions in \-E mode in addition to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dI\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print include directives in \-E mode in addition to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dM\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print macro definitions in \-E mode instead to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-disable\-symbolication\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable symbolizing crash backtraces.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-ast\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Emit Clang AST files for source inputs
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-ir\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Emit llvm ir
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-llvm\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use the LLVM representation for assembler and object files
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-eosio\-pp\-dir=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the directory for eosio\-pp
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fPIC\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Generate position independent code. This option is used for shared libraries
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fasm\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Assemble file for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fcolor\-diagnostics\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use colors in diagnostics
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-finline\-functions\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Inline suitable functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-finline\-hint\-functions\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Inline functions which are (explicitly or implicitly) marked inline
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fmerge\-all\-constants\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Allow merging of constants
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fnative\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Compile and link for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-cfl\-aa\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable CFL Alias Analysis
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-elide\-constructors\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable C++ copy constructor elision
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-lto\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable LTO
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-post\-pass\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t run post processing pass
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-stack\-first\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t set the stack first in memory
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-client\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-server\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\-all\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Force the usage of stack protectors for all functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\-strong\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use a strong heuristic to apply stack protectors to functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-enums\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimizations based on the strict definition of an enum\[aq]s value range
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-return\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Always treat control flow paths that fall off the end of a non\-void function as unreachable
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-vtable\-pointers\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fuse\-main\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use main as entry
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-h\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Alias for \-\-help
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display available options (\-\-help\-hidden for more)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-hidden\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display all available options
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-list\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display list of available options (\-\-help\-list\-hidden for more)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-list\-hidden\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display list of all available options
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-imports=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the file for cdt.imports
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-include=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include file before parsing
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-isysroot=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the system root directory (usually /)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-isystem=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to SYSTEM include search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-l=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Root name of library to link
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-lto\-opt=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
LTO Optimization level (O0\-O3)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-mllvm=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Pass arguments to llvm
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-abigen\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable ABI file generation
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-missing\-ricardian\-clause\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable warnings for missing Ricardian clauses
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-o=<file>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write output to <file>
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-only\-export=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Export only this symbol
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-print\-all\-options\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print all option values after command line parsing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-print\-options\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print non\-default options after command line parsing
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-shared\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Make shared object native library
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-canary\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Stack canary for non stack first layouts
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-size=<int>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-sysroot=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the system root directory
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-use\-freeing\-malloc\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the malloc implementation to the old freeing malloc
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-use\-rt\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use software compiler\-rt
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-v\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Show commands to run and use verbose output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-version\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display the version of this program
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-w\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Suppress all warnings
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-warn\-action\-read\-only\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Issue a warning if a read\-only action uses a write API and continue compilation
|
||||
\f[R]
|
||||
.fi
|
||||
.SH BUGS
|
||||
.PP
|
||||
Please submit bug reports online at
|
||||
https://github.com/AntelopeIO/cdt/issues
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
For more details consult the full documentation and sources
|
||||
https://github.com/AntelopeIO/cdt
|
||||
@@ -1,351 +0,0 @@
|
||||
---
|
||||
title: CDT-CC
|
||||
section: 1
|
||||
header: Contract Development Toolkit (CDT)
|
||||
footer: AntelopeIO
|
||||
date: April 14, 2023
|
||||
---
|
||||
# NAME
|
||||
cdt-cc - Antelope smart contract C to WebAssembly compiler
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
`cdt-cc [options] <input file>`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
**cdt-cc** Is a C compiler which converts C smart contract code to WebAssemply for
|
||||
execution in Antelope block chain virtual machines.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
**`-C`**
|
||||
|
||||
Include comments in preprocessed output
|
||||
|
||||
**`--CC`**
|
||||
|
||||
Include comments from within macros in preprocessed output
|
||||
|
||||
**`-D=<name definition>`**
|
||||
|
||||
Define <macro> to <value> (or 1 if <value> omitted)
|
||||
|
||||
**`-U=<name>`**
|
||||
|
||||
Undefine any previous definition of name, either built in or defined with a -D option
|
||||
|
||||
**`-E`**
|
||||
|
||||
Only run the preprocessor
|
||||
|
||||
**`-I=<dir>`**
|
||||
|
||||
Add directory to include search path
|
||||
|
||||
**`-L=<dir>`**
|
||||
|
||||
Add directory to library search path
|
||||
|
||||
**`--MF=<file>`**
|
||||
|
||||
Write depfile output
|
||||
|
||||
**`--MD`**
|
||||
|
||||
Write depfile containing user and system headers
|
||||
|
||||
**`--MMD`**
|
||||
|
||||
Like -MD except mention only user header files, not system header files.
|
||||
|
||||
**`--MT=<target>`**
|
||||
|
||||
Specify name of main file output in depfile
|
||||
|
||||
**`-O=<optimization_level>`**
|
||||
|
||||
Optimization level s, 0-3
|
||||
|
||||
**`-R=<dir>`**
|
||||
|
||||
Add the directory dir to the list of directories to be searched for resource files
|
||||
|
||||
**`-S`**
|
||||
|
||||
Only run preprocess and compilation steps
|
||||
|
||||
**`-W=<warning_name>`**
|
||||
|
||||
Enable the specified warning.
|
||||
|
||||
**`--abi-version=<string>`**
|
||||
|
||||
Which ABI version to generate
|
||||
|
||||
**`--abigen`**
|
||||
|
||||
Generate ABI
|
||||
|
||||
**`--abigen_output=<string>`**
|
||||
|
||||
ABIGEN output
|
||||
|
||||
**`--allow-names`**
|
||||
|
||||
Allow creation of name section
|
||||
|
||||
**`--allow-sse`**
|
||||
|
||||
Should not be used, except for build libc
|
||||
|
||||
**`-c`**
|
||||
|
||||
Only run preprocess, compile, and assemble steps
|
||||
|
||||
**`--contract=<string>`**
|
||||
|
||||
Contract name
|
||||
|
||||
**`--dD`**
|
||||
|
||||
Print macro definitions in -E mode in addition to normal output
|
||||
|
||||
**`--dI`**
|
||||
|
||||
Print include directives in -E mode in addition to normal output
|
||||
|
||||
**`--dM`**
|
||||
|
||||
Print macro definitions in -E mode instead to normal output
|
||||
|
||||
**`--disable-symbolication`**
|
||||
|
||||
Disable symbolizing crash backtraces.
|
||||
|
||||
**`--emit-ast`**
|
||||
|
||||
Emit Clang AST files for source inputs
|
||||
|
||||
**`--emit-ir`**
|
||||
|
||||
Emit llvm ir
|
||||
|
||||
**`--emit-llvm`**
|
||||
|
||||
Use the LLVM representation for assembler and object files
|
||||
|
||||
**`--eosio-pp-dir=<string>`**
|
||||
|
||||
Set the directory for eosio-pp
|
||||
|
||||
**`--fPIC`**
|
||||
|
||||
Generate position independent code. This option is used for shared libraries
|
||||
|
||||
**`--fasm`**
|
||||
|
||||
Assemble file for x86-64
|
||||
|
||||
**`--fcolor-diagnostics`**
|
||||
|
||||
Use colors in diagnostics
|
||||
|
||||
**`--finline-functions`**
|
||||
|
||||
Inline suitable functions
|
||||
|
||||
**`--finline-hint-functions`**
|
||||
|
||||
Inline functions which are (explicitly or implicitly) marked inline
|
||||
|
||||
**`--fmerge-all-constants`**
|
||||
|
||||
Allow merging of constants
|
||||
|
||||
**`--fnative`**
|
||||
|
||||
Compile and link for x86-64
|
||||
|
||||
**`--fno-cfl-aa`**
|
||||
|
||||
Disable CFL Alias Analysis
|
||||
|
||||
**`--fno-elide-constructors`**
|
||||
|
||||
Disable C++ copy constructor elision
|
||||
|
||||
**`--fno-lto`**
|
||||
|
||||
Disable LTO
|
||||
|
||||
**`--fno-post-pass`**
|
||||
|
||||
Don't run post processing pass
|
||||
|
||||
**`--fno-stack-first`**
|
||||
|
||||
Don't set the stack first in memory
|
||||
|
||||
**`--fquery`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-client`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-server`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fstack-protector`**
|
||||
|
||||
Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
|
||||
**`--fstack-protector-all`**
|
||||
|
||||
Force the usage of stack protectors for all functions
|
||||
|
||||
**`--fstack-protector-strong`**
|
||||
|
||||
Use a strong heuristic to apply stack protectors to functions
|
||||
|
||||
**`--fstrict-enums`**
|
||||
|
||||
Enable optimizations based on the strict definition of an enum's value range
|
||||
|
||||
**`--fstrict-return`**
|
||||
|
||||
Always treat control flow paths that fall off the end of a non-void function as unreachable
|
||||
|
||||
**`--fstrict-vtable-pointers`**
|
||||
|
||||
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
|
||||
**`--fuse-main`**
|
||||
|
||||
Use main as entry
|
||||
|
||||
**`-h`**
|
||||
|
||||
Alias for --help
|
||||
|
||||
**`--help`**
|
||||
|
||||
Display available options (--help-hidden for more)
|
||||
|
||||
**`--help-hidden`**
|
||||
|
||||
Display all available options
|
||||
|
||||
**`--help-list`**
|
||||
|
||||
Display list of available options (--help-list-hidden for more)
|
||||
|
||||
**`--help-list-hidden`**
|
||||
|
||||
Display list of all available options
|
||||
|
||||
**`--imports=<string>`**
|
||||
|
||||
Set the file for cdt.imports
|
||||
|
||||
**`--include=<string>`**
|
||||
|
||||
Include file before parsing
|
||||
|
||||
**`--isysroot=<string>`**
|
||||
|
||||
Set the system root directory (usually /)
|
||||
|
||||
**`--isystem=<string>`**
|
||||
|
||||
Add directory to SYSTEM include search path
|
||||
|
||||
**`-l=<string>`**
|
||||
|
||||
Root name of library to link
|
||||
|
||||
**`--lto-opt=<string>`**
|
||||
|
||||
LTO Optimization level (O0-O3)
|
||||
|
||||
**`--mllvm=<string>`**
|
||||
|
||||
Pass arguments to llvm
|
||||
|
||||
**`--no-abigen`**
|
||||
|
||||
Disable ABI file generation
|
||||
|
||||
**`--no-missing-ricardian-clause`**
|
||||
|
||||
Disable warnings for missing Ricardian clauses
|
||||
|
||||
**`-o=<file>`**
|
||||
|
||||
Write output to <file>
|
||||
|
||||
**`--only-export=<string>`**
|
||||
|
||||
Export only this symbol
|
||||
|
||||
**`--print-all-options`**
|
||||
|
||||
Print all option values after command line parsing
|
||||
|
||||
**`--print-options`**
|
||||
|
||||
Print non-default options after command line parsing
|
||||
|
||||
**`--shared`**
|
||||
|
||||
Make shared object native library
|
||||
|
||||
**`--stack-canary`**
|
||||
|
||||
Stack canary for non stack first layouts
|
||||
|
||||
**`--stack-size=<int>`**
|
||||
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
|
||||
**`--sysroot=<string>`**
|
||||
|
||||
Set the system root directory
|
||||
|
||||
**`--use-freeing-malloc`**
|
||||
|
||||
Set the malloc implementation to the old freeing malloc
|
||||
|
||||
**`--use-rt`**
|
||||
|
||||
Use software compiler-rt
|
||||
|
||||
**`-v`**
|
||||
|
||||
Show commands to run and use verbose output
|
||||
|
||||
**`--version`**
|
||||
|
||||
Display the version of this program
|
||||
|
||||
**`-w`**
|
||||
|
||||
Suppress all warnings
|
||||
|
||||
**`--warn-action-read-only`**
|
||||
|
||||
Issue a warning if a read-only action uses a write API and continue compilation
|
||||
|
||||
|
||||
# BUGS
|
||||
|
||||
Please submit bug reports online at https://github.com/AntelopeIO/cdt/issues
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
For more details consult the full documentation and sources https://github.com/AntelopeIO/cdt
|
||||
|
||||
|
||||
@@ -1,850 +0,0 @@
|
||||
.\" Automatically generated by Pandoc 2.5
|
||||
.\"
|
||||
.TH "CDT\-CPP" "1" "April 08, 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
cdt\-cpp \- Antelope smart contract C++ to WebAssembly compiler
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]cdt\-cpp [options] <input file>\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\f[B]cdt\-cpp\f[R] Is a C++ compiler which converts C++ smart contract
|
||||
code to WebAssemply for execution in Antelope block chain virtual
|
||||
machines.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
\f[B]\f[CB]\-C\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include comments in preprocessed output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-CC\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include comments from within macros in preprocessed output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-D=<name definition>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Define <macro> to <value> (or 1 if <value> omitted)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-U=<name>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Undefine any previous definition of name, either built in or defined with a \-D option
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-E\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run the preprocessor
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-I=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to include search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-L=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to library search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MF=<file>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write depfile output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write depfile containing user and system headers
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MMD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Like \-MD except mention only user header files, not system header files.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-MT=<target>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Specify name of main file output in depfile
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-O=<optimization_level>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Optimization level s, 0\-3
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-R=<dir>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add the directory dir to the list of directories to be searched for resource files
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-S\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run preprocess and compilation steps
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-W=<warning_name>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable the specified warning.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abi\-version=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Which ABI version to generate
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abigen\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Generate ABI
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abigen_output=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
ABIGEN output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-allow\-names\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Allow creation of name section
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-allow\-sse\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Should not be used, except for building libc
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-as\-secure\-log\-file\-name=<value>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
As secure log file name (initialized from AS_SECURE_LOG_FILE env variable)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-asm\-macro\-max\-nesting\-depth=<uint>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
The maximum nesting depth allowed for assembly macros
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-c\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Only run preprocess, compile, and assemble steps
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-color\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use colors in output (default=autodetect)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-contract=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Contract name
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dD\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print macro definitions in \-E mode in addition to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dI\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print include directives in \-E mode in addition to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-dM\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print macro definitions in \-E mode instead to normal output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-disable\-symbolication\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable symbolizing crash backtraces.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-ast\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Emit Clang AST files for source inputs
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-ir\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Emit llvm ir
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-emit\-llvm\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use the LLVM representation for assembler and object files
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-eosio\-pp\-dir=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the directory for eosio\-pp
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fPIC\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Generate position independent code. This option is used for shared libraries
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-faligned\-allocation\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable C++17 aligned allocation functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fasm\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Assemble file for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fcolor\-diagnostics\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use colors in diagnostics
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fcoroutine\-ts\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable support for the C++ Coroutines TS
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-finline\-functions\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Inline suitable functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-finline\-hint\-functions\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Inline functions which are (explicitly or implicitly) marked inline
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fmerge\-all\-constants\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Allow merging of constants
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fnative\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Compile and link for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-cfl\-aa\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable CFL Alias Analysis
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-elide\-constructors\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable C++ copy constructor elision
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-lto\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable LTO
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-post\-pass\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t run post processing pass
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-stack\-first\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t set the stack first in memory
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-client\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-server\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\-all\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Force the usage of stack protectors for all functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstack\-protector\-strong\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use a strong heuristic to apply stack protectors to functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-enums\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimizations based on the strict definition of an enum\[aq]s value range
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-return\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Always treat control flow paths that fall off the end of a non\-void function as unreachable
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fstrict\-vtable\-pointers\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fuse\-main\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use main as entry
|
||||
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-h\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Alias for \-\-help
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display available options (\-\-help\-hidden for more)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-hidden\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display all available options
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-list\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display list of available options (\-\-help\-list\-hidden for more)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\-list\-hidden\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display list of all available options
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-imports=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the file for cdt.imports
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-include=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Include file before parsing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-info\-output\-file=<filename>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
File to append \-stats and \-timer output to
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-isysroot=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the system root directory (usually /)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-isystem=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to SYSTEM include search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-l=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Root name of library to link
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-lto\-opt=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
LTO Optimization level (O0\-O3)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-mllvm=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Pass arguments to llvm
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-abigen\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable ABI file generation
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-missing\-ricardian\-clause\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable warnings for missing Ricardian clauses
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-non\-global\-value\-max\-name\-size=<uint>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Maximum size for the name of non\-global values
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-o=<file>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write output to <file>
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-only\-export=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Export only this symbol
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-opt\-bisect\-limit=<int>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Maximum optimization to perform
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-pass\-remarks=<pattern>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimization remarks from passes whose name match the given regular expression
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-pass\-remarks\-analysis=<pattern>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable optimization analysis remarks from passes whose name match the given regular expression
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-pass\-remarks\-missed=<pattern>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable missed optimization remarks from passes whose name match the given regular expression
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-print\-all\-options\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print all option values after command line parsing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-print\-options\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Print non\-default options after command line parsing
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-remarks\-yaml\-string\-table\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable the usage of a string table with YAML remarks
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-rng\-seed=<seed>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Seed for the random number generator
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-shared\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Make shared object native library
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-canary\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Stack canary for non stack first layouts
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-size=<int>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-static\-func\-full\-module\-prefix\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use full module build paths in the profile counter names for static functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-static\-func\-strip\-dirname\-prefix=<uint>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Strip specified level of directory name from source path in the profile counter name for static functions
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stats\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable statistics output from program (available with Asserts)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stats\-json\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display statistics as json data
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-std=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Language standard to compile for
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-switch\-inst\-prof\-update\-wrapper\-strict\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Assert that prof branch_weights metadata is valid when creating an instance of SwitchInstProfUpdateWrapper
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-sysroot=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the system root directory
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-time\-trace\-granularity=<uint>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Minimum time granularity (in microseconds) traced by time profiler
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-track\-memory\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Enable \-time\-passes memory tracking (this may be slow)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-use\-dbg\-addr\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use llvm.dbg.addr for all local variables
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-use\-freeing\-malloc\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Set the malloc implementation to the old freeing malloc
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-use\-rt\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use software compiler\-rt
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-v\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Show commands to run and use verbose output
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-version\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display the version of this program
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-view\-background\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Execute graph viewer in the background. Creates tmp file litter
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-w\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Suppress all warnings
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-warn\-action\-read\-only\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Issue a warning if a read\-only action uses a write API and continue compilation
|
||||
\f[R]
|
||||
.fi
|
||||
.SH BUGS
|
||||
.PP
|
||||
Please submit bug reports online at
|
||||
https://github.com/AntelopeIO/cdt/issues
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
For more details consult the full documentation and sources
|
||||
https://github.com/AntelopeIO/cdt
|
||||
@@ -1,443 +0,0 @@
|
||||
---
|
||||
title: CDT-CPP
|
||||
section: 1
|
||||
header: Contract Development Toolkit (CDT)
|
||||
footer: AntelopeIO
|
||||
date: April 08, 2023
|
||||
---
|
||||
# NAME
|
||||
cdt-cpp - Antelope smart contract C++ to WebAssembly compiler
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
`cdt-cpp [options] <input file>`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
**cdt-cpp** Is a C++ compiler which converts C++ smart contract code to WebAssemply for
|
||||
execution in Antelope block chain virtual machines.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
**`-C`**
|
||||
|
||||
Include comments in preprocessed output
|
||||
|
||||
**`--CC`**
|
||||
|
||||
Include comments from within macros in preprocessed output
|
||||
|
||||
**`-D=<name definition>`**
|
||||
|
||||
Define <macro> to <value> (or 1 if <value> omitted)
|
||||
|
||||
**`-U=<name>`**
|
||||
|
||||
Undefine any previous definition of name, either built in or defined with a -D option
|
||||
|
||||
**`-E`**
|
||||
|
||||
Only run the preprocessor
|
||||
|
||||
**`-I=<dir>`**
|
||||
|
||||
Add directory to include search path
|
||||
|
||||
**`-L=<dir>`**
|
||||
|
||||
Add directory to library search path
|
||||
|
||||
**`--MF=<file>`**
|
||||
|
||||
Write depfile output
|
||||
|
||||
**`--MD`**
|
||||
|
||||
Write depfile containing user and system headers
|
||||
|
||||
**`--MMD`**
|
||||
|
||||
Like -MD except mention only user header files, not system header files.
|
||||
|
||||
**`--MT=<target>`**
|
||||
|
||||
Specify name of main file output in depfile
|
||||
|
||||
**`-O=<optimization_level>`**
|
||||
|
||||
Optimization level s, 0-3
|
||||
|
||||
**`-R=<dir>`**
|
||||
|
||||
Add the directory dir to the list of directories to be searched for resource files
|
||||
|
||||
**`-S`**
|
||||
|
||||
Only run preprocess and compilation steps
|
||||
|
||||
**`-W=<warning_name>`**
|
||||
|
||||
Enable the specified warning.
|
||||
|
||||
**`--abi-version=<string>`**
|
||||
|
||||
Which ABI version to generate
|
||||
|
||||
**`--abigen`**
|
||||
|
||||
Generate ABI
|
||||
|
||||
**`--abigen_output=<string>`**
|
||||
|
||||
ABIGEN output
|
||||
|
||||
**`--allow-names`**
|
||||
|
||||
Allow creation of name section
|
||||
|
||||
**`--allow-sse`**
|
||||
|
||||
Should not be used, except for building libc
|
||||
|
||||
**`--as-secure-log-file-name=<value>`**
|
||||
|
||||
As secure log file name (initialized from AS_SECURE_LOG_FILE env variable)
|
||||
|
||||
**`--asm-macro-max-nesting-depth=<uint>`**
|
||||
|
||||
The maximum nesting depth allowed for assembly macros
|
||||
|
||||
**`-c`**
|
||||
|
||||
Only run preprocess, compile, and assemble steps
|
||||
|
||||
**`--color`**
|
||||
|
||||
Use colors in output (default=autodetect)
|
||||
|
||||
**`--contract=<string>`**
|
||||
|
||||
Contract name
|
||||
|
||||
**`--dD`**
|
||||
|
||||
Print macro definitions in -E mode in addition to normal output
|
||||
|
||||
**`--dI`**
|
||||
|
||||
Print include directives in -E mode in addition to normal output
|
||||
|
||||
**`--dM`**
|
||||
|
||||
Print macro definitions in -E mode instead to normal output
|
||||
|
||||
**`--disable-symbolication`**
|
||||
|
||||
Disable symbolizing crash backtraces.
|
||||
|
||||
**`--emit-ast`**
|
||||
|
||||
Emit Clang AST files for source inputs
|
||||
|
||||
**`--emit-ir`**
|
||||
|
||||
Emit llvm ir
|
||||
|
||||
**`--emit-llvm`**
|
||||
|
||||
Use the LLVM representation for assembler and object files
|
||||
|
||||
**`--eosio-pp-dir=<string>`**
|
||||
|
||||
Set the directory for eosio-pp
|
||||
|
||||
**`--fPIC`**
|
||||
|
||||
Generate position independent code. This option is used for shared libraries
|
||||
|
||||
**`--faligned-allocation`**
|
||||
|
||||
Enable C++17 aligned allocation functions
|
||||
|
||||
**`--fasm`**
|
||||
|
||||
Assemble file for x86-64
|
||||
|
||||
**`--fcolor-diagnostics`**
|
||||
|
||||
Use colors in diagnostics
|
||||
|
||||
**`--fcoroutine-ts`**
|
||||
|
||||
Enable support for the C++ Coroutines TS
|
||||
|
||||
**`--finline-functions`**
|
||||
|
||||
Inline suitable functions
|
||||
|
||||
**`--finline-hint-functions`**
|
||||
|
||||
Inline functions which are (explicitly or implicitly) marked inline
|
||||
|
||||
**`--fmerge-all-constants`**
|
||||
|
||||
Allow merging of constants
|
||||
|
||||
**`--fnative`**
|
||||
|
||||
Compile and link for x86-64
|
||||
|
||||
**`--fno-cfl-aa`**
|
||||
|
||||
Disable CFL Alias Analysis
|
||||
|
||||
**`--fno-elide-constructors`**
|
||||
|
||||
Disable C++ copy constructor elision
|
||||
|
||||
**`--fno-lto`**
|
||||
|
||||
Disable LTO
|
||||
|
||||
**`--fno-post-pass`**
|
||||
|
||||
Don't run post processing pass
|
||||
|
||||
**`--fno-stack-first`**
|
||||
|
||||
Don't set the stack first in memory
|
||||
|
||||
**`--fquery`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-client`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-server`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fstack-protector`**
|
||||
|
||||
Enable stack protectors for functions potentially vulnerable to stack smashing
|
||||
|
||||
**`--fstack-protector-all`**
|
||||
|
||||
Force the usage of stack protectors for all functions
|
||||
|
||||
**`--fstack-protector-strong`**
|
||||
|
||||
Use a strong heuristic to apply stack protectors to functions
|
||||
|
||||
**`--fstrict-enums`**
|
||||
|
||||
Enable optimizations based on the strict definition of an enum's value range
|
||||
|
||||
**`--fstrict-return`**
|
||||
|
||||
Always treat control flow paths that fall off the end of a non-void function as unreachable
|
||||
|
||||
**`--fstrict-vtable-pointers`**
|
||||
|
||||
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
|
||||
|
||||
**`--fuse-main`**
|
||||
|
||||
Use main as entry
|
||||
|
||||
**`-h`**
|
||||
|
||||
Alias for --help
|
||||
|
||||
**`--help`**
|
||||
|
||||
Display available options (--help-hidden for more)
|
||||
|
||||
**`--help-hidden`**
|
||||
|
||||
Display all available options
|
||||
|
||||
**`--help-list`**
|
||||
|
||||
Display list of available options (--help-list-hidden for more)
|
||||
|
||||
**`--help-list-hidden`**
|
||||
|
||||
Display list of all available options
|
||||
|
||||
**`--imports=<string>`**
|
||||
|
||||
Set the file for cdt.imports
|
||||
|
||||
**`--include=<string>`**
|
||||
|
||||
Include file before parsing
|
||||
|
||||
**`--info-output-file=<filename>`**
|
||||
|
||||
File to append -stats and -timer output to
|
||||
|
||||
**`--isysroot=<string>`**
|
||||
|
||||
Set the system root directory (usually /)
|
||||
|
||||
**`--isystem=<string>`**
|
||||
|
||||
Add directory to SYSTEM include search path
|
||||
|
||||
**`-l=<string>`**
|
||||
|
||||
Root name of library to link
|
||||
|
||||
**`--lto-opt=<string>`**
|
||||
|
||||
LTO Optimization level (O0-O3)
|
||||
|
||||
**`--mllvm=<string>`**
|
||||
|
||||
Pass arguments to llvm
|
||||
|
||||
**`--no-abigen`**
|
||||
|
||||
Disable ABI file generation
|
||||
|
||||
**`--no-missing-ricardian-clause`**
|
||||
|
||||
Disable warnings for missing Ricardian clauses
|
||||
|
||||
**`--non-global-value-max-name-size=<uint>`**
|
||||
|
||||
Maximum size for the name of non-global values
|
||||
|
||||
**`-o=<file>`**
|
||||
|
||||
Write output to <file>
|
||||
|
||||
**`--only-export=<string>`**
|
||||
|
||||
Export only this symbol
|
||||
|
||||
**`--opt-bisect-limit=<int>`**
|
||||
|
||||
Maximum optimization to perform
|
||||
|
||||
**`--pass-remarks=<pattern>`**
|
||||
|
||||
Enable optimization remarks from passes whose name match the given regular expression
|
||||
|
||||
**`--pass-remarks-analysis=<pattern>`**
|
||||
|
||||
Enable optimization analysis remarks from passes whose name match the given regular expression
|
||||
|
||||
**`--pass-remarks-missed=<pattern>`**
|
||||
|
||||
Enable missed optimization remarks from passes whose name match the given regular expression
|
||||
|
||||
**`--print-all-options`**
|
||||
|
||||
Print all option values after command line parsing
|
||||
|
||||
**`--print-options`**
|
||||
|
||||
Print non-default options after command line parsing
|
||||
|
||||
**`--remarks-yaml-string-table`**
|
||||
|
||||
Enable the usage of a string table with YAML remarks
|
||||
|
||||
**`--rng-seed=<seed>`**
|
||||
|
||||
Seed for the random number generator
|
||||
|
||||
**`--shared`**
|
||||
|
||||
Make shared object native library
|
||||
|
||||
**`--stack-canary`**
|
||||
|
||||
Stack canary for non stack first layouts
|
||||
|
||||
**`--stack-size=<int>`**
|
||||
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
|
||||
**`--static-func-full-module-prefix`**
|
||||
|
||||
Use full module build paths in the profile counter names for static functions
|
||||
|
||||
**`--static-func-strip-dirname-prefix=<uint>`**
|
||||
|
||||
Strip specified level of directory name from source path in the profile counter name for static functions
|
||||
|
||||
**`--stats`**
|
||||
|
||||
Enable statistics output from program (available with Asserts)
|
||||
|
||||
**`--stats-json`**
|
||||
|
||||
Display statistics as json data
|
||||
|
||||
**`--std=<string>`**
|
||||
|
||||
Language standard to compile for
|
||||
|
||||
**`--switch-inst-prof-update-wrapper-strict`**
|
||||
|
||||
Assert that prof branch_weights metadata is valid when creating an instance of SwitchInstProfUpdateWrapper
|
||||
|
||||
**`--sysroot=<string>`**
|
||||
|
||||
Set the system root directory
|
||||
|
||||
**`--time-trace-granularity=<uint>`**
|
||||
|
||||
Minimum time granularity (in microseconds) traced by time profiler
|
||||
|
||||
**`--track-memory`**
|
||||
|
||||
Enable -time-passes memory tracking (this may be slow)
|
||||
|
||||
**`--use-dbg-addr`**
|
||||
|
||||
Use llvm.dbg.addr for all local variables
|
||||
|
||||
**`--use-freeing-malloc`**
|
||||
|
||||
Set the malloc implementation to the old freeing malloc
|
||||
|
||||
**`--use-rt`**
|
||||
|
||||
Use software compiler-rt
|
||||
|
||||
**`-v`**
|
||||
|
||||
Show commands to run and use verbose output
|
||||
|
||||
**`--version`**
|
||||
|
||||
Display the version of this program
|
||||
|
||||
**`--view-background`**
|
||||
|
||||
Execute graph viewer in the background. Creates tmp file litter
|
||||
|
||||
**`-w`**
|
||||
|
||||
Suppress all warnings
|
||||
|
||||
**`--warn-action-read-only`**
|
||||
|
||||
Issue a warning if a read-only action uses a write API and continue compilation
|
||||
|
||||
|
||||
# BUGS
|
||||
|
||||
Please submit bug reports online at https://github.com/AntelopeIO/cdt/issues
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
For more details consult the full documentation and sources https://github.com/AntelopeIO/cdt
|
||||
|
||||
|
||||
@@ -1,215 +0,0 @@
|
||||
.\" Automatically generated by Pandoc 2.5
|
||||
.\"
|
||||
.TH "CDT\-LD" "1" "April 14, 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
cdt\-ld \- Antelope smart contract WebAssembly linker
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]cdt\-ld [options] <input file>\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\f[B]cdt\-ld\f[R] Is a compiled smart contract linker which creates
|
||||
WebAssemply code for execution in Antelope block chain virtual machines.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
\f[B]\f[CB]\-L=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Add directory to library search path
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-abi\-version=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Which ABI version to generate
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-allow\-names\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Allows name section to be created
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fasm\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Assemble file for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fnative\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Compile and link for x86\-64
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-cfl\-aa\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable CFL Alias Analysis
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-lto\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable LTO
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-post\-pass\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t run post processing pass
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fno\-stack\-first\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Don\[aq]t set the stack first in memory
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-client\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fquery\-server\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Produce binaries for wasmql
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-fuse\-main\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Use main as entry
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-help\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display available options (\-\-help\-hidden for more)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-l=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Root name of library to link
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-lto\-opt=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
LTO Optimization level (O0\-O3)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-mllvm=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Pass arguments to llvm
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-abigen\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable ABI file generation
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-no\-missing\-ricardian\-clause\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Disable warnings for missing Ricardian clauses
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-o=<string>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Write output to <file>
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-shared\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Make shared object native library
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-canary\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Stack canary for non stack first layouts
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-stack\-size=<int>\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[B]\f[CB]\-\-version\f[B]\f[R]
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
Display the version of this program
|
||||
\f[R]
|
||||
.fi
|
||||
.SH BUGS
|
||||
.PP
|
||||
Please submit bug reports online at
|
||||
https://github.com/AntelopeIO/cdt/issues
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
For more details consult the full documentation and sources
|
||||
https://github.com/AntelopeIO/cdt
|
||||
@@ -1,127 +0,0 @@
|
||||
---
|
||||
title: CDT-LD
|
||||
section: 1
|
||||
header: Contract Development Toolkit (CDT)
|
||||
footer: AntelopeIO
|
||||
date: April 14, 2023
|
||||
---
|
||||
# NAME
|
||||
cdt-ld - Antelope smart contract WebAssembly linker
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
`cdt-ld [options] <input file>`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
**cdt-ld** Is a compiled smart contract linker which creates WebAssemply code for
|
||||
execution in Antelope block chain virtual machines.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
**`-L=<string>`**
|
||||
|
||||
Add directory to library search path
|
||||
|
||||
**`--abi-version=<string>`**
|
||||
|
||||
Which ABI version to generate
|
||||
|
||||
**`--allow-names`**
|
||||
|
||||
Allows name section to be created
|
||||
|
||||
**`--fasm`**
|
||||
|
||||
Assemble file for x86-64
|
||||
|
||||
**`--fnative`**
|
||||
|
||||
Compile and link for x86-64
|
||||
|
||||
**`--fno-cfl-aa`**
|
||||
|
||||
Disable CFL Alias Analysis
|
||||
|
||||
**`--fno-lto`**
|
||||
|
||||
Disable LTO
|
||||
|
||||
**`--fno-post-pass`**
|
||||
|
||||
Don't run post processing pass
|
||||
|
||||
**`--fno-stack-first`**
|
||||
|
||||
Don't set the stack first in memory
|
||||
|
||||
**`--fquery`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-client`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fquery-server`**
|
||||
|
||||
Produce binaries for wasmql
|
||||
|
||||
**`--fuse-main`**
|
||||
|
||||
Use main as entry
|
||||
|
||||
**`--help`**
|
||||
|
||||
Display available options (--help-hidden for more)
|
||||
|
||||
**`-l=<string>`**
|
||||
|
||||
Root name of library to link
|
||||
|
||||
**`--lto-opt=<string>`**
|
||||
|
||||
LTO Optimization level (O0-O3)
|
||||
|
||||
**`--mllvm=<string>`**
|
||||
|
||||
Pass arguments to llvm
|
||||
|
||||
**`--no-abigen`**
|
||||
|
||||
Disable ABI file generation
|
||||
|
||||
**`--no-missing-ricardian-clause`**
|
||||
|
||||
Disable warnings for missing Ricardian clauses
|
||||
|
||||
**`-o=<string>`**
|
||||
|
||||
Write output to <file>
|
||||
|
||||
**`--shared`**
|
||||
|
||||
Make shared object native library
|
||||
|
||||
**`--stack-canary`**
|
||||
|
||||
Stack canary for non stack first layouts
|
||||
|
||||
**`--stack-size=<int>`**
|
||||
|
||||
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
|
||||
|
||||
**`--version`**
|
||||
|
||||
Display the version of this program
|
||||
|
||||
|
||||
# BUGS
|
||||
|
||||
Please submit bug reports online at https://github.com/AntelopeIO/cdt/issues
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
For more details consult the full documentation and sources https://github.com/AntelopeIO/cdt
|
||||
|
||||
|
||||
@@ -1,263 +0,0 @@
|
||||
.\" Automatically generated by Pandoc 2.5
|
||||
.\"
|
||||
.TH "CDT\-OBJDUMP" "1" "April 18, 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
cdt\-objdump \- manual page for cdt\-objdump
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
cdt\-objdump is a CDT object file dumper
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
cdt\-objdump [options] <input object files>
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
Generic Options:
|
||||
.PP
|
||||
\f[B]\-\-help\f[R] \- Display available options
|
||||
(\f[B]\-\-help\-hidden\f[R] for more)
|
||||
.PP
|
||||
\f[B]\-\-help\-list\f[R] \- Display list of available options
|
||||
(\f[B]\-\-help\-list\-hidden\f[R] for more)
|
||||
.PP
|
||||
\f[B]\-\-version\f[R] \- Display the version of this program
|
||||
.PP
|
||||
cdt\-objdump MachO Specific Options:
|
||||
.PP
|
||||
\f[B]\-\-arch=\f[R]<string> \- architecture(s) from a Mach\-O file to
|
||||
dump
|
||||
.PP
|
||||
\f[B]\-\-archive\-member\-offsets\f[R] \- Print the offset to each
|
||||
archive member for Mach\-O archives (requires \f[B]\-\-macho\f[R] and
|
||||
\f[B]\-archive\-headers\f[R])
|
||||
.PP
|
||||
\f[B]\-\-bind\f[R] \- Display mach\-o binding info
|
||||
.PP
|
||||
\f[B]\-\-data\-in\-code\f[R] \- Print the data in code table for Mach\-O
|
||||
objects (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-dis\-symname=\f[R]<string> \- disassemble just this
|
||||
symbol\[aq]s instructions (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-dsym=\f[R]<string> \- Use .dSYM file for debug info
|
||||
.PP
|
||||
\f[B]\-\-dylib\-id\f[R] \- Print the shared library\[aq]s id for the
|
||||
dylib Mach\-O file (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-dylibs\-used\f[R] \- Print the shared libraries used for linked
|
||||
Mach\-O files (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-exports\-trie\f[R] \- Display mach\-o exported symbols
|
||||
.PP
|
||||
\f[B]\-\-full\-leading\-addr\f[R] \- Print full leading address
|
||||
.PP
|
||||
\f[B]\-g\f[R] \- Print line information from debug info if available
|
||||
.PP
|
||||
\f[B]\-\-indirect\-symbols\f[R] \- Print indirect symbol table for
|
||||
Mach\-O objects (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-info\-plist\f[R] \- Print the info plist section as strings for
|
||||
Mach\-O objects (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-lazy\-bind\f[R] \- Display mach\-o lazy binding info
|
||||
.PP
|
||||
\f[B]\-\-link\-opt\-hints\f[R] \- Print the linker optimization hints
|
||||
for Mach\-O objects (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-no\-leading\-headers\f[R] \- Print no leading headers
|
||||
.PP
|
||||
\f[B]\-\-no\-symbolic\-operands\f[R] \- do not symbolic operands when
|
||||
disassembling (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-non\-verbose\f[R] \- Print the info for Mach\-O objects in
|
||||
non\-verbose or numeric form (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-objc\-meta\-data\f[R] \- Print the Objective\-C runtime meta
|
||||
data for Mach\-O files (requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-private\-header\f[R] \- Display only the first format specific
|
||||
file header
|
||||
.PP
|
||||
\f[B]\-\-rebase\f[R] \- Display mach\-o rebasing info
|
||||
.PP
|
||||
\f[B]\-\-universal\-headers\f[R] \- Print Mach\-O universal headers
|
||||
(requires \f[B]\-\-macho\f[R])
|
||||
.PP
|
||||
\f[B]\-\-weak\-bind\f[R] \- Display mach\-o weak binding info
|
||||
.PP
|
||||
cdt\-objdump Options:
|
||||
.PP
|
||||
\f[B]\-C\f[R] \- Alias for \f[B]\-\-demangle\f[R]
|
||||
.PP
|
||||
\f[B]\-D\f[R] \- Alias for \f[B]\-\-disassemble\-all\f[R]
|
||||
.PP
|
||||
\f[B]\-M\f[R] \- Alias for \f[B]\-\-disassembler\-options\f[R]
|
||||
.PP
|
||||
\f[B]\-R\f[R] \- Alias for \f[B]\-\-dynamic\-reloc\f[R]
|
||||
.PP
|
||||
\f[B]\-S\f[R] \- Alias for \f[B]\-\-source\f[R]
|
||||
.PP
|
||||
\f[B]\-T\f[R] \- Alias for \f[B]\-\-dynamic\-syms\f[R]
|
||||
.PP
|
||||
\f[B]\-a\f[R] \- Alias for \f[B]\-\-archive\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-\-adjust\-vma=\f[R]<offset> \- Increase the displayed address by
|
||||
the specified offset
|
||||
.PP
|
||||
\f[B]\-\-all\-headers\f[R] \- Display all available header information
|
||||
.PP
|
||||
\f[B]\-\-arch\-name=\f[R]<string> \- Target arch to disassemble for, see
|
||||
\f[B]\-version\f[R] for available targets
|
||||
.PP
|
||||
\f[B]\-\-archive\-headers\f[R] \- Display archive header information
|
||||
.PP
|
||||
\f[B]\-d\f[R] \- Alias for \f[B]\-\-disassemble\f[R]
|
||||
.PP
|
||||
\f[B]\-\-debug\-vars\f[R] \- Print the locations (in registers or
|
||||
memory) of source\-level variables alongside disassembly
|
||||
.PP
|
||||
\f[B]\-\-debug\-vars=\f[R]<value> \- Print the locations (in registers
|
||||
or memory) of source\-level variables alongside disassembly
|
||||
.TP
|
||||
.B =<empty>
|
||||
\- unicode
|
||||
.TP
|
||||
.B =unicode
|
||||
\- unicode
|
||||
.TP
|
||||
.B =ascii
|
||||
\- unicode
|
||||
.PP
|
||||
\f[B]\-\-debug\-vars\-indent=\f[R]<int> \- Distance to indent the
|
||||
source\-level variable display, relative to the start of the disassembly
|
||||
.PP
|
||||
\f[B]\-\-demangle\f[R] \- Demangle symbols names
|
||||
.PP
|
||||
\f[B]\-\-disassemble\f[R] \- Display assembler mnemonics for the machine
|
||||
instructions
|
||||
.PP
|
||||
\f[B]\-\-disassemble\-all\f[R] \- Display assembler mnemonics for the
|
||||
machine instructions
|
||||
.PP
|
||||
\f[B]\-\-disassemble\-symbols=\f[R]<string> \- List of symbols to
|
||||
disassemble.
|
||||
Accept demangled names when \f[B]\-\-demangle\f[R] is specified,
|
||||
otherwise accept mangled names
|
||||
.PP
|
||||
\f[B]\-\-disassemble\-zeroes\f[R] \- Do not skip blocks of zeroes when
|
||||
disassembling
|
||||
.PP
|
||||
\f[B]\-\-disassembler\-options=\f[R]<options> \- Pass target specific
|
||||
disassembler options
|
||||
.PP
|
||||
\f[B]\-\-dwarf=\f[R]<value> \- Dump of dwarf debug sections:
|
||||
.TP
|
||||
.B =frames
|
||||
\- .debug_frame
|
||||
.PP
|
||||
\f[B]\-\-dynamic\-reloc\f[R] \- Display the dynamic relocation entries
|
||||
in the file
|
||||
.PP
|
||||
\f[B]\-\-dynamic\-syms\f[R] \- Display the contents of the dynamic
|
||||
symbol table
|
||||
.PP
|
||||
\f[B]\-f\f[R] \- Alias for \f[B]\-\-file\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-\-fault\-map\-section\f[R] \- Display contents of faultmap
|
||||
section
|
||||
.PP
|
||||
\f[B]\-\-file\-headers\f[R] \- Display the contents of the overall file
|
||||
header
|
||||
.PP
|
||||
\f[B]\-\-full\-contents\f[R] \- Display the content of each section
|
||||
.PP
|
||||
\f[B]\-h\f[R] \- Alias for \f[B]\-\-section\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-\-headers\f[R] \- Alias for \f[B]\-\-section\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-j\f[R] \- Alias for \f[B]\-\-section\f[R]
|
||||
.PP
|
||||
\f[B]\-l\f[R] \- Alias for \f[B]\-\-line\-numbers\f[R]
|
||||
.PP
|
||||
\f[B]\-\-line\-numbers\f[R] \- Display source line numbers with
|
||||
disassembly.
|
||||
Implies disassemble object
|
||||
.PP
|
||||
\f[B]\-m\f[R] \- Alias for \f[B]\-\-macho\f[R]
|
||||
.PP
|
||||
\f[B]\-\-macho\f[R] \- Use MachO specific object file parser
|
||||
.PP
|
||||
\f[B]\-\-mattr=\f[R]<a1,+a2,\-a3,...> \- Target specific attributes
|
||||
.PP
|
||||
\f[B]\-\-mcpu=\f[R]<cpu\-name> \- Target a specific cpu type
|
||||
(\f[B]\-mcpu\f[R]=\f[I]help\f[R] for details)
|
||||
.PP
|
||||
\f[B]\-\-no\-leading\-addr\f[R] \- Print no leading address
|
||||
.PP
|
||||
\f[B]\-\-no\-show\-raw\-insn\f[R] \- When disassembling instructions, do
|
||||
not print the instruction bytes.
|
||||
.PP
|
||||
\f[B]\-p\f[R] \- Alias for \f[B]\-\-private\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-\-print\-imm\-hex\f[R] \- Use hex format for immediate values
|
||||
.PP
|
||||
\f[B]\-\-private\-headers\f[R] \- Display format specific file headers
|
||||
.PP
|
||||
\f[B]\-r\f[R] \- Alias for \f[B]\-\-reloc\f[R]
|
||||
.PP
|
||||
\f[B]\-\-raw\-clang\-ast\f[R] \- Dump the raw binary contents of the
|
||||
clang AST section
|
||||
.PP
|
||||
\f[B]\-\-reloc\f[R] \- Display the relocation entries in the file
|
||||
.PP
|
||||
\f[B]\-s\f[R] \- Alias for \f[B]\-\-full\-contents\f[R]
|
||||
.PP
|
||||
\f[B]\-\-section=\f[R]<string> \- Operate on the specified sections
|
||||
only.
|
||||
With \f[B]\-\-macho\f[R] dump segment,section
|
||||
.PP
|
||||
\f[B]\-\-section\-headers\f[R] \- Display summaries of the headers for
|
||||
each section.
|
||||
.PP
|
||||
\f[B]\-\-show\-lma\f[R] \- Display LMA column when dumping ELF section
|
||||
headers
|
||||
.PP
|
||||
\f[B]\-\-source\f[R] \- Display source inlined with disassembly.
|
||||
Implies disassemble object
|
||||
.PP
|
||||
\f[B]\-\-start\-address=\f[R]<address> \- Disassemble beginning at
|
||||
address
|
||||
.PP
|
||||
\f[B]\-\-stop\-address=\f[R]<address> \- Stop disassembly at address
|
||||
.PP
|
||||
\f[B]\-\-symbol\-description\f[R] \- Add symbol description for
|
||||
disassembly.
|
||||
This option is for XCOFF files only
|
||||
.PP
|
||||
\f[B]\-\-syms\f[R] \- Display the symbol table
|
||||
.PP
|
||||
\f[B]\-t\f[R] \- Alias for \f[B]\-\-syms\f[R]
|
||||
.PP
|
||||
\f[B]\-\-triple=\f[R]<string> \- Target triple to disassemble for, see
|
||||
\f[B]\-version\f[R] for available targets
|
||||
.PP
|
||||
\f[B]\-u\f[R] \- Alias for \f[B]\-\-unwind\-info\f[R]
|
||||
.PP
|
||||
\f[B]\-\-unwind\-info\f[R] \- Display unwind information
|
||||
.PP
|
||||
\f[B]\-\-wide\f[R] \- Ignored for compatibility with GNU objdump
|
||||
.PP
|
||||
\f[B]\-x\f[R] \- Alias for \f[B]\-\-all\-headers\f[R]
|
||||
.PP
|
||||
\f[B]\-z\f[R] \- Alias for \f[B]\-\-disassemble\-zeroes\f[R]
|
||||
.PP
|
||||
Pass \[at]FILE as argument to read options from FILE.
|
||||
.SH BUGS
|
||||
.PP
|
||||
Please submit bug reports online at
|
||||
https://github.com/AntelopeIO/cdt/issues
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
For more details consult the full documentation and sources
|
||||
https://github.com/AntelopeIO/cdt
|
||||
@@ -1,262 +0,0 @@
|
||||
---
|
||||
date: April 18, 2023
|
||||
section: 1
|
||||
title: 'CDT-OBJDUMP'
|
||||
footer: AntelopeIO
|
||||
header: Contract Development Toolkit (CDT)
|
||||
---
|
||||
|
||||
# NAME
|
||||
|
||||
cdt-objdump - manual page for cdt-objdump
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
cdt-objdump is a CDT object file dumper
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
cdt-objdump \[options\] \<input object files\>
|
||||
|
||||
# OPTIONS
|
||||
|
||||
Generic Options:
|
||||
|
||||
**\--help** - Display available options (**\--help-hidden** for more)
|
||||
|
||||
**\--help-list** - Display list of available options
|
||||
(**\--help-list-hidden** for more)
|
||||
|
||||
**\--version** - Display the version of this program
|
||||
|
||||
cdt-objdump MachO Specific Options:
|
||||
|
||||
**\--arch=**\<string\> - architecture(s) from a Mach-O file to dump
|
||||
|
||||
**\--archive-member-offsets** - Print the offset to each archive member
|
||||
for Mach-O archives (requires **\--macho** and **-archive-headers**)
|
||||
|
||||
**\--bind** - Display mach-o binding info
|
||||
|
||||
**\--data-in-code** - Print the data in code table for Mach-O objects
|
||||
(requires **\--macho**)
|
||||
|
||||
**\--dis-symname=**\<string\> - disassemble just this symbol\'s
|
||||
instructions (requires **\--macho**)
|
||||
|
||||
**\--dsym=**\<string\> - Use .dSYM file for debug info
|
||||
|
||||
**\--dylib-id** - Print the shared library\'s id for the dylib Mach-O
|
||||
file (requires **\--macho**)
|
||||
|
||||
**\--dylibs-used** - Print the shared libraries used for linked Mach-O
|
||||
files (requires **\--macho**)
|
||||
|
||||
**\--exports-trie** - Display mach-o exported symbols
|
||||
|
||||
**\--full-leading-addr** - Print full leading address
|
||||
|
||||
**-g** - Print line information from debug info if available
|
||||
|
||||
**\--indirect-symbols** - Print indirect symbol table for Mach-O objects
|
||||
(requires **\--macho**)
|
||||
|
||||
**\--info-plist** - Print the info plist section as strings for Mach-O
|
||||
objects (requires **\--macho**)
|
||||
|
||||
**\--lazy-bind** - Display mach-o lazy binding info
|
||||
|
||||
**\--link-opt-hints** - Print the linker optimization hints for Mach-O
|
||||
objects (requires **\--macho**)
|
||||
|
||||
**\--no-leading-headers** - Print no leading headers
|
||||
|
||||
**\--no-symbolic-operands** - do not symbolic operands when
|
||||
disassembling (requires **\--macho**)
|
||||
|
||||
**\--non-verbose** - Print the info for Mach-O objects in non-verbose or
|
||||
numeric form (requires **\--macho**)
|
||||
|
||||
**\--objc-meta-data** - Print the Objective-C runtime meta data for
|
||||
Mach-O files (requires **\--macho**)
|
||||
|
||||
**\--private-header** - Display only the first format specific file
|
||||
header
|
||||
|
||||
**\--rebase** - Display mach-o rebasing info
|
||||
|
||||
**\--universal-headers** - Print Mach-O universal headers (requires
|
||||
**\--macho**)
|
||||
|
||||
**\--weak-bind** - Display mach-o weak binding info
|
||||
|
||||
cdt-objdump Options:
|
||||
|
||||
**-C** - Alias for **\--demangle**
|
||||
|
||||
**-D** - Alias for **\--disassemble-all**
|
||||
|
||||
**-M** - Alias for **\--disassembler-options**
|
||||
|
||||
**-R** - Alias for **\--dynamic-reloc**
|
||||
|
||||
**-S** - Alias for **\--source**
|
||||
|
||||
**-T** - Alias for **\--dynamic-syms**
|
||||
|
||||
**-a** - Alias for **\--archive-headers**
|
||||
|
||||
**\--adjust-vma=**\<offset\> - Increase the displayed address by the
|
||||
specified offset
|
||||
|
||||
**\--all-headers** - Display all available header information
|
||||
|
||||
**\--arch-name=**\<string\> - Target arch to disassemble for, see
|
||||
**-version** for available targets
|
||||
|
||||
**\--archive-headers** - Display archive header information
|
||||
|
||||
**-d** - Alias for **\--disassemble**
|
||||
|
||||
**\--debug-vars** - Print the locations (in registers or memory) of
|
||||
source-level variables alongside disassembly
|
||||
|
||||
**\--debug-vars=**\<value\> - Print the locations (in registers or
|
||||
memory) of source-level variables alongside disassembly
|
||||
|
||||
=\<empty\>
|
||||
|
||||
: \- unicode
|
||||
|
||||
=unicode
|
||||
|
||||
: \- unicode
|
||||
|
||||
=ascii
|
||||
|
||||
: \- unicode
|
||||
|
||||
**\--debug-vars-indent=**\<int\> - Distance to indent the source-level
|
||||
variable display, relative to the start of the disassembly
|
||||
|
||||
**\--demangle** - Demangle symbols names
|
||||
|
||||
**\--disassemble** - Display assembler mnemonics for the machine
|
||||
instructions
|
||||
|
||||
**\--disassemble-all** - Display assembler mnemonics for the machine
|
||||
instructions
|
||||
|
||||
**\--disassemble-symbols=**\<string\> - List of symbols to disassemble.
|
||||
Accept demangled names when **\--demangle** is specified, otherwise
|
||||
accept mangled names
|
||||
|
||||
**\--disassemble-zeroes** - Do not skip blocks of zeroes when
|
||||
disassembling
|
||||
|
||||
**\--disassembler-options=**\<options\> - Pass target specific
|
||||
disassembler options
|
||||
|
||||
**\--dwarf=**\<value\> - Dump of dwarf debug sections:
|
||||
|
||||
=frames
|
||||
|
||||
: \- .debug\_frame
|
||||
|
||||
**\--dynamic-reloc** - Display the dynamic relocation entries in the
|
||||
file
|
||||
|
||||
**\--dynamic-syms** - Display the contents of the dynamic symbol table
|
||||
|
||||
**-f** - Alias for **\--file-headers**
|
||||
|
||||
**\--fault-map-section** - Display contents of faultmap section
|
||||
|
||||
**\--file-headers** - Display the contents of the overall file header
|
||||
|
||||
**\--full-contents** - Display the content of each section
|
||||
|
||||
**-h** - Alias for **\--section-headers**
|
||||
|
||||
**\--headers** - Alias for **\--section-headers**
|
||||
|
||||
**-j** - Alias for **\--section**
|
||||
|
||||
**-l** - Alias for **\--line-numbers**
|
||||
|
||||
**\--line-numbers** - Display source line numbers with disassembly.
|
||||
Implies disassemble object
|
||||
|
||||
**-m** - Alias for **\--macho**
|
||||
|
||||
**\--macho** - Use MachO specific object file parser
|
||||
|
||||
**\--mattr=**\<a1,+a2,-a3,\...\> - Target specific attributes
|
||||
|
||||
**\--mcpu=**\<cpu-name\> - Target a specific cpu type (**-mcpu**=*help*
|
||||
for details)
|
||||
|
||||
**\--no-leading-addr** - Print no leading address
|
||||
|
||||
**\--no-show-raw-insn** - When disassembling instructions, do not print
|
||||
the instruction bytes.
|
||||
|
||||
**-p** - Alias for **\--private-headers**
|
||||
|
||||
**\--print-imm-hex** - Use hex format for immediate values
|
||||
|
||||
**\--private-headers** - Display format specific file headers
|
||||
|
||||
**-r** - Alias for **\--reloc**
|
||||
|
||||
**\--raw-clang-ast** - Dump the raw binary contents of the clang AST
|
||||
section
|
||||
|
||||
**\--reloc** - Display the relocation entries in the file
|
||||
|
||||
**-s** - Alias for **\--full-contents**
|
||||
|
||||
**\--section=**\<string\> - Operate on the specified sections only. With
|
||||
**\--macho** dump segment,section
|
||||
|
||||
**\--section-headers** - Display summaries of the headers for each
|
||||
section.
|
||||
|
||||
**\--show-lma** - Display LMA column when dumping ELF section headers
|
||||
|
||||
**\--source** - Display source inlined with disassembly. Implies
|
||||
disassemble object
|
||||
|
||||
**\--start-address=**\<address\> - Disassemble beginning at address
|
||||
|
||||
**\--stop-address=**\<address\> - Stop disassembly at address
|
||||
|
||||
**\--symbol-description** - Add symbol description for disassembly. This
|
||||
option is for XCOFF files only
|
||||
|
||||
**\--syms** - Display the symbol table
|
||||
|
||||
**-t** - Alias for **\--syms**
|
||||
|
||||
**\--triple=**\<string\> - Target triple to disassemble for, see
|
||||
**-version** for available targets
|
||||
|
||||
**-u** - Alias for **\--unwind-info**
|
||||
|
||||
**\--unwind-info** - Display unwind information
|
||||
|
||||
**\--wide** - Ignored for compatibility with GNU objdump
|
||||
|
||||
**-x** - Alias for **\--all-headers**
|
||||
|
||||
**-z** - Alias for **\--disassemble-zeroes**
|
||||
|
||||
Pass \@FILE as argument to read options from FILE.
|
||||
|
||||
# BUGS
|
||||
|
||||
Please submit bug reports online at https://github.com/AntelopeIO/cdt/issues
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
For more details consult the full documentation and sources https://github.com/AntelopeIO/cdt
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
for file in cdt-*.1.md; do
|
||||
pandoc "$file" -s -t man -o "${file%.md}"
|
||||
done
|
||||
@@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Файл README.md</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('_r_e_a_d_m_e_8md.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Файл README.md</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="_r_e_a_d_m_e_8md.html">README.md</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,261 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Файл libraries/eosiolib/contracts/eosio/action.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Классы</a> |
|
||||
<a href="#namespaces">Пространства имен</a> |
|
||||
<a href="#define-members">Макросы</a> |
|
||||
<a href="#func-members">Функции</a> |
|
||||
<a href="#var-members">Переменные</a> </div>
|
||||
<div class="headertitle"><div class="title">Файл action.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><code>#include <cstdlib></code><br />
|
||||
<code>#include <type_traits></code><br />
|
||||
<code>#include "<a class="el" href="serialize_8hpp_source.html">../../core/eosio/serialize.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="datastream_8hpp_source.html">../../core/eosio/datastream.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="name_8hpp_source.html">../../core/eosio/name.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="fixed__bytes_8hpp_source.html">../../core/eosio/fixed_bytes.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="ignore_8hpp_source.html">../../core/eosio/ignore.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="time_8hpp_source.html">../../core/eosio/time.hpp</a>"</code><br />
|
||||
</div>
|
||||
<p><a href="action_8hpp_source.html">См. исходные тексты.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Классы</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1code__hash__result.html">eosio::code_hash_result</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1permission__level.html">eosio::permission_level</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1action.html">eosio::action</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1action__wrapper.html">eosio::action_wrapper< Name, Action ></a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Обёртка для конкретного действия, упрощающая отправку встроенных (inline) действий к этому действию из других контрактов. Пример: <a href="structeosio_1_1action__wrapper.html#details">Подробнее...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1variant__action__wrapper.html">eosio::variant_action_wrapper< Name, Actions ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4.html">eosio::inline_dispatcher< void(T::*)(Args...), Name ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Пространства имен</h2></td></tr>
|
||||
<tr class="memitem:namespaceeosio"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio.html">eosio</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespaceeosio_1_1internal__use__do__not__use"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use.html">eosio::internal_use_do_not_use</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespaceeosio_1_1detail"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1detail.html">eosio::detail</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
|
||||
Макросы</h2></td></tr>
|
||||
<tr class="memitem:a20c19e0f931fad16c4db6d29480acddf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html#a20c19e0f931fad16c4db6d29480acddf">INLINE_ACTION_SENDER3</a>(CONTRACT_CLASS, FUNCTION_NAME, ACTION_NAME)   <a class="el" href="structeosio_1_1inline__dispatcher.html">::eosio::inline_dispatcher</a><decltype(&CONTRACT_CLASS::FUNCTION_NAME), ACTION_NAME>::call</td></tr>
|
||||
<tr class="separator:a20c19e0f931fad16c4db6d29480acddf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abeecc07548f70308a4aab9fcdb2d22f1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="action_8hpp_abeecc07548f70308a4aab9fcdb2d22f1.html#abeecc07548f70308a4aab9fcdb2d22f1">INLINE_ACTION_SENDER2</a>(CONTRACT_CLASS, NAME)   <a class="el" href="action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html#a20c19e0f931fad16c4db6d29480acddf">INLINE_ACTION_SENDER3</a>( CONTRACT_CLASS, NAME, <a class="el" href="structeosio_1_1name.html">::eosio::name</a>(#NAME) )</td></tr>
|
||||
<tr class="separator:abeecc07548f70308a4aab9fcdb2d22f1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1bb288791cd436d07bddf3d43f4740d4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html#a1bb288791cd436d07bddf3d43f4740d4">INLINE_ACTION_SENDER</a>(...)   BLUEGRASS_META_OVERLOAD(INLINE_ACTION_SENDER,__VA_ARGS__)(__VA_ARGS__)</td></tr>
|
||||
<tr class="separator:a1bb288791cd436d07bddf3d43f4740d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7c267f408db88d60ce0a5c74845596ee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html#a7c267f408db88d60ce0a5c74845596ee">SEND_INLINE_ACTION</a>(<a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>, NAME, ...)   <a class="el" href="action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html#a1bb288791cd436d07bddf3d43f4740d4">INLINE_ACTION_SENDER</a>(std::decay_t<decltype(<a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>)>, NAME)( (<a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>).get_self(),__VA_ARGS__)</td></tr>
|
||||
<tr class="memdesc:a7c267f408db88d60ce0a5c74845596ee"><td class="mdescLeft"> </td><td class="mdescRight">Макрос для упрощения вызова встроенных (inline) действий <a href="action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html#a7c267f408db88d60ce0a5c74845596ee">Подробнее...</a><br /></td></tr>
|
||||
<tr class="separator:a7c267f408db88d60ce0a5c74845596ee"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Функции</h2></td></tr>
|
||||
<tr class="memitem:a4cf60fb32150ba3e0e63f357f9747387"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">eosio::internal_use_do_not_use::__attribute__</a> ((eosio_wasm_import)) void eosio_assert(uint32_t test</td></tr>
|
||||
<tr class="separator:a4cf60fb32150ba3e0e63f357f9747387"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3ce0a297276d44f03c9b5dc17fcd2b31"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
|
||||
<tr class="memitem:ga3ce0a297276d44f03c9b5dc17fcd2b31"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__action_ga3ce0a297276d44f03c9b5dc17fcd2b31.html#ga3ce0a297276d44f03c9b5dc17fcd2b31">eosio::unpack_action_data</a> ()</td></tr>
|
||||
<tr class="separator:ga3ce0a297276d44f03c9b5dc17fcd2b31"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4e1838d05857e38ddf8916e616698460"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460">eosio::require_recipient</a> (name notify_account)</td></tr>
|
||||
<tr class="memdesc:ga4e1838d05857e38ddf8916e616698460"><td class="mdescLeft"> </td><td class="mdescRight">Добавляет указанный аккаунт в множество аккаунтов для уведомления <a href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460">Подробнее...</a><br /></td></tr>
|
||||
<tr class="separator:ga4e1838d05857e38ddf8916e616698460"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa61e47227ac315887caf1e028191ff7d"><td class="memTemplParams" colspan="2">template<typename... accounts> </td></tr>
|
||||
<tr class="memitem:gaa61e47227ac315887caf1e028191ff7d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__action_gaa61e47227ac315887caf1e028191ff7d.html#gaa61e47227ac315887caf1e028191ff7d">eosio::require_recipient</a> (name notify_account, accounts... remaining_accounts)</td></tr>
|
||||
<tr class="separator:gaa61e47227ac315887caf1e028191ff7d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga47b4afe79f1de07376e2ecdd541f92c7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga47b4afe79f1de07376e2ecdd541f92c7.html#ga47b4afe79f1de07376e2ecdd541f92c7">eosio::require_auth</a> (name n)</td></tr>
|
||||
<tr class="separator:ga47b4afe79f1de07376e2ecdd541f92c7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0005da20de567962c4357c18ba29bdf7"><td class="memItemLeft" align="right" valign="top">time_point </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga0005da20de567962c4357c18ba29bdf7.html#ga0005da20de567962c4357c18ba29bdf7">eosio::publication_time</a> ()</td></tr>
|
||||
<tr class="separator:ga0005da20de567962c4357c18ba29bdf7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1fe03e054c95360f2dd4e563aa49695b"><td class="memItemLeft" align="right" valign="top">name </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_a1fe03e054c95360f2dd4e563aa49695b.html#a1fe03e054c95360f2dd4e563aa49695b">eosio::current_receiver</a> ()</td></tr>
|
||||
<tr class="separator:a1fe03e054c95360f2dd4e563aa49695b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a42e0876d95586115725e60f81b684b9a"><td class="memItemLeft" align="right" valign="top">checksum256 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a">eosio::get_code_hash</a> (name account, code_hash_result *full_result=nullptr)</td></tr>
|
||||
<tr class="separator:a42e0876d95586115725e60f81b684b9a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga02dcd9ca25bcdd8279efe0d45e50c9eb"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb">eosio::read_action_data</a> (void *msg, uint32_t len)</td></tr>
|
||||
<tr class="separator:ga02dcd9ca25bcdd8279efe0d45e50c9eb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a602640a08f02a893cab6b28016866ec0"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0">eosio::action_data_size</a> ()</td></tr>
|
||||
<tr class="separator:a602640a08f02a893cab6b28016866ec0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa9c6bd255a286073e7dc8a337f2b11a2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_gaa9c6bd255a286073e7dc8a337f2b11a2.html#gaa9c6bd255a286073e7dc8a337f2b11a2">eosio::require_auth</a> (const permission_level &level)</td></tr>
|
||||
<tr class="separator:gaa9c6bd255a286073e7dc8a337f2b11a2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga9e4650a61bbe0809cc62e6b2af8252d3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga9e4650a61bbe0809cc62e6b2af8252d3.html#ga9e4650a61bbe0809cc62e6b2af8252d3">eosio::has_auth</a> (name n)</td></tr>
|
||||
<tr class="separator:ga9e4650a61bbe0809cc62e6b2af8252d3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga887cd0fed2350c5ae52565ba6e290db3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__action_ga887cd0fed2350c5ae52565ba6e290db3.html#ga887cd0fed2350c5ae52565ba6e290db3">eosio::is_account</a> (name n)</td></tr>
|
||||
<tr class="separator:ga887cd0fed2350c5ae52565ba6e290db3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0917f40ecb384d7934f7983351b397ce"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
|
||||
<tr class="memitem:a0917f40ecb384d7934f7983351b397ce"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceeosio_a0917f40ecb384d7934f7983351b397ce.html#a0917f40ecb384d7934f7983351b397ce">eosio::dispatch_inline</a> (name code, name act, std::vector< permission_level > perms, std::tuple< Args... > args)</td></tr>
|
||||
<tr class="separator:a0917f40ecb384d7934f7983351b397ce"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Переменные</h2></td></tr>
|
||||
<tr class="memitem:aa83533278bab525701fa405485bb5390"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_aa83533278bab525701fa405485bb5390.html#aa83533278bab525701fa405485bb5390">eosio::internal_use_do_not_use::len</a></td></tr>
|
||||
<tr class="separator:aa83533278bab525701fa405485bb5390"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac956e7abe6f9a0aec8d5afce830c336a"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_ac956e7abe6f9a0aec8d5afce830c336a.html#ac956e7abe6f9a0aec8d5afce830c336a">eosio::internal_use_do_not_use::permission</a></td></tr>
|
||||
<tr class="separator:ac956e7abe6f9a0aec8d5afce830c336a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a40f68c0fdc4874d206da23b1feccba91"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">eosio::internal_use_do_not_use::size</a></td></tr>
|
||||
<tr class="separator:a40f68c0fdc4874d206da23b1feccba91"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa87ebca610090d4846fdf11d9dc46e2d"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_aa87ebca610090d4846fdf11d9dc46e2d.html#aa87ebca610090d4846fdf11d9dc46e2d">eosio::internal_use_do_not_use::struct_version</a></td></tr>
|
||||
<tr class="separator:aa87ebca610090d4846fdf11d9dc46e2d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2ca0cdda4f780baef07a180db174398d"><td class="memItemLeft" align="right" valign="top">uint32_t char * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_a2ca0cdda4f780baef07a180db174398d.html#a2ca0cdda4f780baef07a180db174398d">eosio::internal_use_do_not_use::result_buffer</a></td></tr>
|
||||
<tr class="separator:a2ca0cdda4f780baef07a180db174398d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae6703efb9c09cd5c00bf70eee2bbd9e0"><td class="memItemLeft" align="right" valign="top">uint32_t char size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">eosio::internal_use_do_not_use::buffer_size</a></td></tr>
|
||||
<tr class="separator:ae6703efb9c09cd5c00bf70eee2bbd9e0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Подробное описание</h2>
|
||||
<div class="textblock"><dl class="section copyright"><dt>Авторство</dt><dd>определён в eos/LICENSE </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="action_8hpp_source.html">action.hpp</a></p>
|
||||
</div></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
var action_8hpp =
|
||||
[
|
||||
[ "eosio::code_hash_result", "structeosio_1_1code__hash__result.html", "structeosio_1_1code__hash__result" ],
|
||||
[ "eosio::action_wrapper< Name, Action >", "structeosio_1_1action__wrapper.html", "structeosio_1_1action__wrapper" ],
|
||||
[ "eosio::variant_action_wrapper< Name, Actions >", "structeosio_1_1variant__action__wrapper.html", "structeosio_1_1variant__action__wrapper" ],
|
||||
[ "eosio::inline_dispatcher< void(T::*)(Args...), Name >", "structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4.html", null ],
|
||||
[ "INLINE_ACTION_SENDER", "action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html#a1bb288791cd436d07bddf3d43f4740d4", null ],
|
||||
[ "INLINE_ACTION_SENDER2", "action_8hpp_abeecc07548f70308a4aab9fcdb2d22f1.html#abeecc07548f70308a4aab9fcdb2d22f1", null ],
|
||||
[ "INLINE_ACTION_SENDER3", "action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html#a20c19e0f931fad16c4db6d29480acddf", null ],
|
||||
[ "SEND_INLINE_ACTION", "action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html#a7c267f408db88d60ce0a5c74845596ee", null ],
|
||||
[ "__attribute__", "action_8hpp.html#a4cf60fb32150ba3e0e63f357f9747387", null ],
|
||||
[ "action_data_size", "action_8hpp.html#a602640a08f02a893cab6b28016866ec0", null ],
|
||||
[ "current_receiver", "action_8hpp.html#a1fe03e054c95360f2dd4e563aa49695b", null ],
|
||||
[ "dispatch_inline", "action_8hpp.html#a0917f40ecb384d7934f7983351b397ce", null ],
|
||||
[ "get_code_hash", "action_8hpp.html#a42e0876d95586115725e60f81b684b9a", null ],
|
||||
[ "has_auth", "action_8hpp.html#ga9e4650a61bbe0809cc62e6b2af8252d3", null ],
|
||||
[ "is_account", "action_8hpp.html#ga887cd0fed2350c5ae52565ba6e290db3", null ],
|
||||
[ "publication_time", "action_8hpp.html#ga0005da20de567962c4357c18ba29bdf7", null ],
|
||||
[ "read_action_data", "action_8hpp.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb", null ],
|
||||
[ "require_auth", "action_8hpp.html#gaa9c6bd255a286073e7dc8a337f2b11a2", null ],
|
||||
[ "require_auth", "action_8hpp.html#ga47b4afe79f1de07376e2ecdd541f92c7", null ],
|
||||
[ "require_recipient", "action_8hpp.html#ga4e1838d05857e38ddf8916e616698460", null ],
|
||||
[ "require_recipient", "action_8hpp.html#gaa61e47227ac315887caf1e028191ff7d", null ],
|
||||
[ "unpack_action_data", "action_8hpp.html#ga3ce0a297276d44f03c9b5dc17fcd2b31", null ],
|
||||
[ "buffer_size", "action_8hpp.html#ae6703efb9c09cd5c00bf70eee2bbd9e0", null ],
|
||||
[ "len", "action_8hpp.html#aa83533278bab525701fa405485bb5390", null ],
|
||||
[ "permission", "action_8hpp.html#ac956e7abe6f9a0aec8d5afce830c336a", null ],
|
||||
[ "result_buffer", "action_8hpp.html#a2ca0cdda4f780baef07a180db174398d", null ],
|
||||
[ "size", "action_8hpp.html#a40f68c0fdc4874d206da23b1feccba91", null ],
|
||||
[ "struct_version", "action_8hpp.html#aa87ebca610090d4846fdf11d9dc46e2d", null ]
|
||||
];
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: INLINE_ACTION_SENDER</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a1bb288791cd436d07bddf3d43f4740d4" name="a1bb288791cd436d07bddf3d43f4740d4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1bb288791cd436d07bddf3d43f4740d4">◆ </a></span>INLINE_ACTION_SENDER</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define INLINE_ACTION_SENDER</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   BLUEGRASS_META_OVERLOAD(INLINE_ACTION_SENDER,__VA_ARGS__)(__VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="action_8hpp_source.html">action.hpp</a> строка <a class="el" href="action_8hpp_source.html#l00628">628</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: INLINE_ACTION_SENDER3</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a20c19e0f931fad16c4db6d29480acddf" name="a20c19e0f931fad16c4db6d29480acddf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a20c19e0f931fad16c4db6d29480acddf">◆ </a></span>INLINE_ACTION_SENDER3</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define INLINE_ACTION_SENDER3</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">CONTRACT_CLASS, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">FUNCTION_NAME, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">ACTION_NAME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td>   <a class="el" href="structeosio_1_1inline__dispatcher.html">::eosio::inline_dispatcher</a><decltype(&CONTRACT_CLASS::FUNCTION_NAME), ACTION_NAME>::call</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="action_8hpp_source.html">action.hpp</a> строка <a class="el" href="action_8hpp_source.html#l00622">622</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,200 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: SEND_INLINE_ACTION</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a7c267f408db88d60ce0a5c74845596ee" name="a7c267f408db88d60ce0a5c74845596ee"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7c267f408db88d60ce0a5c74845596ee">◆ </a></span>SEND_INLINE_ACTION</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define SEND_INLINE_ACTION</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">NAME, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td>   <a class="el" href="action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html#a1bb288791cd436d07bddf3d43f4740d4">INLINE_ACTION_SENDER</a>(std::decay_t<decltype(<a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>)>, NAME)( (<a class="el" href="group__contract_ga3dd8a1be2fbf980ee66578476244d85f.html#ga3dd8a1be2fbf980ee66578476244d85f">CONTRACT</a>).get_self(),__VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Макрос для упрощения вызова встроенных (inline) действий </p>
|
||||
<p >Отправка встроенного (inline) действия из контракта.</p>
|
||||
<p >Макрос отправки встроенного действия упрощает вызов встроенных действий. При вызове новых действий из уже выполняемых COOPOS поддерживает две модели обмена: встроенные (inline) и отложенные (deferred). Встроенные действия выполняются как часть текущей транзакции. Этот макрос создаёт <a class="el" href="group__action.html">Действие</a> с переданными параметрами и автоматически вызывает action.send() для этого действия.</p>
|
||||
<p >Пример: </p><div class="fragment"><div class="line"><a class="code hl_define" href="action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html#a7c267f408db88d60ce0a5c74845596ee" title="Макрос для упрощения вызова встроенных (inline) действий">SEND_INLINE_ACTION</a>( *<span class="keyword">this</span>, transfer, {st.issuer,N(active)}, {st.issuer, to, quantity, memo} );</div>
|
||||
</div><!-- fragment --><p >Приведённый выше пример взят из контракта токена COOPOS (аналог стандартного токена). В примере: используется переданный разыменованный указатель <code>this</code> для вызова this.get_self(), т.е. контракта токена COOPOS; вызывается действие transfer контракта токена COOPOS; используется разрешение active аккаунта «issuer»; передаются параметры st.issuer, to, quantity и memo. Макрос создаёт структуру действия для вызова send() — вызова transfer(account_name from, account_name to, asset quantity, string memo)</p>
|
||||
<dl class="params"><dt>Аргументы</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">CONTRACT</td><td>— вызываемый контракт, содержащий отправляемое действие; соответствует account </td></tr>
|
||||
<tr><td class="paramname">NAME</td><td>— имя вызываемого действия; соответствует <a class="el" href="group__name.html">Имя</a> </td></tr>
|
||||
<tr><td class="paramname">...</td><td>— авторизующее разрешение; соответствует authorization, затем параметры действия; соответствуют data. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="action_8hpp_source.html">action.hpp</a> строка <a class="el" href="action_8hpp_source.html#l00656">656</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,180 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: INLINE_ACTION_SENDER2</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp_abeecc07548f70308a4aab9fcdb2d22f1.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="abeecc07548f70308a4aab9fcdb2d22f1" name="abeecc07548f70308a4aab9fcdb2d22f1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abeecc07548f70308a4aab9fcdb2d22f1">◆ </a></span>INLINE_ACTION_SENDER2</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define INLINE_ACTION_SENDER2</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">CONTRACT_CLASS, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname">NAME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td>   <a class="el" href="action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html#a20c19e0f931fad16c4db6d29480acddf">INLINE_ACTION_SENDER3</a>( CONTRACT_CLASS, NAME, <a class="el" href="structeosio_1_1name.html">::eosio::name</a>(#NAME) )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="action_8hpp_source.html">action.hpp</a> строка <a class="el" href="action_8hpp_source.html#l00625">625</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,571 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Исходный файл libraries/eosiolib/contracts/eosio/action.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('action_8hpp_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">action.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="action_8hpp.html">См. документацию.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include <cstdlib></span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include <type_traits></span></div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include "../../core/eosio/serialize.hpp"</span></div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include "../../core/eosio/datastream.hpp"</span></div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include "../../core/eosio/name.hpp"</span></div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include "../../core/eosio/fixed_bytes.hpp"</span></div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include "../../core/eosio/ignore.hpp"</span></div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include "../../core/eosio/time.hpp"</span></div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceeosio.html">eosio</a> {</div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">namespace </span>internal_use_do_not_use {</div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_aa83533278bab525701fa405485bb5390.html#aa83533278bab525701fa405485bb5390"> 21</a></span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_function" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb">read_action_data</a>( <span class="keywordtype">void</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa83533278bab525701fa405485bb5390.html#aa83533278bab525701fa405485bb5390">len</a> );</div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_function" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0">action_data_size</a>();</div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460" title="Добавляет указанный аккаунт в множество аккаунтов для уведомления">require_recipient</a>( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> );</div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga47b4afe79f1de07376e2ecdd541f92c7.html#ga47b4afe79f1de07376e2ecdd541f92c7">require_auth</a>( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> );</div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="group__action_ga9e4650a61bbe0809cc62e6b2af8252d3.html#ga9e4650a61bbe0809cc62e6b2af8252d3">has_auth</a>( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> );</div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_ac956e7abe6f9a0aec8d5afce830c336a.html#ac956e7abe6f9a0aec8d5afce830c336a"> 36</a></span> <span class="keywordtype">void</span> require_auth2( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_struct" href="structeosio_1_1name.html">name</a>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ac956e7abe6f9a0aec8d5afce830c336a.html#ac956e7abe6f9a0aec8d5afce830c336a">permission</a> );</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="group__action_ga887cd0fed2350c5ae52565ba6e290db3.html#ga887cd0fed2350c5ae52565ba6e290db3">is_account</a>( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> );</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91"> 42</a></span> <span class="keywordtype">void</span> send_inline(<span class="keywordtype">char</span> *serialized_action, <span class="keywordtype">size_t</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a>);</div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">void</span> send_context_free_inline(<span class="keywordtype">char</span> *serialized_action, <span class="keywordtype">size_t</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a>);</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_function" href="group__action_ga0005da20de567962c4357c18ba29bdf7.html#ga0005da20de567962c4357c18ba29bdf7">publication_time</a>();</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_function" href="namespaceeosio_a1fe03e054c95360f2dd4e563aa49695b.html#a1fe03e054c95360f2dd4e563aa49695b">current_receiver</a>();</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0"> 54</a></span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_function" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a">get_code_hash</a>( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> account, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa87ebca610090d4846fdf11d9dc46e2d.html#aa87ebca610090d4846fdf11d9dc46e2d">struct_version</a>, <span class="keywordtype">char</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a2ca0cdda4f780baef07a180db174398d.html#a2ca0cdda4f780baef07a180db174398d">result_buffer</a>, <span class="keywordtype">size_t</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a> );</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> };</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result.html"> 58</a></span> struct <a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a> {</div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_a7dc9ef8535a1a92d5a12945c023c1563.html#a7dc9ef8535a1a92d5a12945c023c1563"> 59</a></span> <a class="code hl_struct" href="structeosio_1_1unsigned__int.html">unsigned_int</a> <a class="code hl_variable" href="structeosio_1_1code__hash__result_a7dc9ef8535a1a92d5a12945c023c1563.html#a7dc9ef8535a1a92d5a12945c023c1563">struct_version</a>;</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_aaf166f0f802cc87adc9f5986e191d051.html#aaf166f0f802cc87adc9f5986e191d051"> 60</a></span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_variable" href="structeosio_1_1code__hash__result_aaf166f0f802cc87adc9f5986e191d051.html#aaf166f0f802cc87adc9f5986e191d051">code_sequence</a>;</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_aac6982ead02d5a1cd8a1213155b87857.html#aac6982ead02d5a1cd8a1213155b87857"> 61</a></span> checksum256 <a class="code hl_variable" href="structeosio_1_1code__hash__result_aac6982ead02d5a1cd8a1213155b87857.html#aac6982ead02d5a1cd8a1213155b87857">code_hash</a>;</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_a94c531f9b7fa14078b54df9bb892d5fa.html#a94c531f9b7fa14078b54df9bb892d5fa"> 62</a></span> uint8_t <a class="code hl_variable" href="structeosio_1_1code__hash__result_a94c531f9b7fa14078b54df9bb892d5fa.html#a94c531f9b7fa14078b54df9bb892d5fa">vm_type</a>;</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_a3c9159cb77ce8d15b1a0e5bfe73ffcbb.html#a3c9159cb77ce8d15b1a0e5bfe73ffcbb"> 63</a></span> uint8_t <a class="code hl_variable" href="structeosio_1_1code__hash__result_a3c9159cb77ce8d15b1a0e5bfe73ffcbb.html#a3c9159cb77ce8d15b1a0e5bfe73ffcbb">vm_version</a>;</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_ac41b77f5fb3e7ca7004af3701c411976.html#ac41b77f5fb3e7ca7004af3701c411976"> 65</a></span> <a class="code hl_function" href="structeosio_1_1code__hash__result_ac41b77f5fb3e7ca7004af3701c411976.html#ac41b77f5fb3e7ca7004af3701c411976">CDT_REFLECT</a>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa87ebca610090d4846fdf11d9dc46e2d.html#aa87ebca610090d4846fdf11d9dc46e2d">struct_version</a>, code_sequence, code_hash, vm_type, vm_version);</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="structeosio_1_1code__hash__result_abff001c3c3671f6a82fa61136db62808.html#abff001c3c3671f6a82fa61136db62808"> 66</a></span> <a class="code hl_function" href="structeosio_1_1code__hash__result_abff001c3c3671f6a82fa61136db62808.html#abff001c3c3671f6a82fa61136db62808">EOSLIB_SERIALIZE</a>(<a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a>, (<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa87ebca610090d4846fdf11d9dc46e2d.html#aa87ebca610090d4846fdf11d9dc46e2d">struct_version</a>)(code_sequence)(code_hash)(vm_type)(vm_version));</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> };</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="group__action_ga3ce0a297276d44f03c9b5dc17fcd2b31.html#ga3ce0a297276d44f03c9b5dc17fcd2b31"> 94</a></span> T <a class="code hl_function" href="group__action_ga3ce0a297276d44f03c9b5dc17fcd2b31.html#ga3ce0a297276d44f03c9b5dc17fcd2b31">unpack_action_data</a>() {</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">constexpr</span> <span class="keywordtype">size_t</span> max_stack_buffer_size = 512;</div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a> = <a class="code hl_function" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0">internal_use_do_not_use::action_data_size</a>();</div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">char</span>* buffer = (<span class="keywordtype">char</span>*)( max_stack_buffer_size < <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a> ? malloc(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a>) : alloca(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a>) );</div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_function" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb">internal_use_do_not_use::read_action_data</a>( buffer, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a> );</div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">return</span> unpack<T>( buffer, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a40f68c0fdc4874d206da23b1feccba91.html#a40f68c0fdc4874d206da23b1feccba91">size</a> );</div>
|
||||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
|
||||
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460"> 109</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460" title="Добавляет указанный аккаунт в множество аккаунтов для уведомления">require_recipient</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> notify_account ){</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_function" href="group__action_gaa61e47227ac315887caf1e028191ff7d.html#gaa61e47227ac315887caf1e028191ff7d">internal_use_do_not_use::require_recipient</a>( notify_account.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
|
||||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keyword">template</span><<span class="keyword">typename</span>... accounts></div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="group__action_gaa61e47227ac315887caf1e028191ff7d.html#gaa61e47227ac315887caf1e028191ff7d"> 131</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460" title="Добавляет указанный аккаунт в множество аккаунтов для уведомления">require_recipient</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> notify_account, accounts... remaining_accounts ){</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_function" href="group__action_gaa61e47227ac315887caf1e028191ff7d.html#gaa61e47227ac315887caf1e028191ff7d">internal_use_do_not_use::require_recipient</a>( notify_account.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_function" href="group__action_ga4e1838d05857e38ddf8916e616698460.html#ga4e1838d05857e38ddf8916e616698460" title="Добавляет указанный аккаунт в множество аккаунтов для уведомления">require_recipient</a>( remaining_accounts... );</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="group__action_ga47b4afe79f1de07376e2ecdd541f92c7.html#ga47b4afe79f1de07376e2ecdd541f92c7"> 142</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga47b4afe79f1de07376e2ecdd541f92c7.html#ga47b4afe79f1de07376e2ecdd541f92c7">require_auth</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> n ) {</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_function" href="group__action_gaa9c6bd255a286073e7dc8a337f2b11a2.html#gaa9c6bd255a286073e7dc8a337f2b11a2">internal_use_do_not_use::require_auth</a>( n.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="group__action_ga0005da20de567962c4357c18ba29bdf7.html#ga0005da20de567962c4357c18ba29bdf7"> 152</a></span> <span class="keyword">inline</span> <a class="code hl_class" href="classeosio_1_1time__point.html">time_point</a> <a class="code hl_function" href="group__action_ga0005da20de567962c4357c18ba29bdf7.html#ga0005da20de567962c4357c18ba29bdf7">publication_time</a>() {</div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classeosio_1_1time__point.html">time_point</a>( <a class="code hl_class" href="classeosio_1_1microseconds.html">microseconds</a> ( <a class="code hl_function" href="group__action_ga0005da20de567962c4357c18ba29bdf7.html#ga0005da20de567962c4357c18ba29bdf7">internal_use_do_not_use::publication_time</a>() ) );</div>
|
||||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> }</div>
|
||||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
|
||||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="namespaceeosio_a1fe03e054c95360f2dd4e563aa49695b.html#a1fe03e054c95360f2dd4e563aa49695b"> 160</a></span> <span class="keyword">inline</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_function" href="namespaceeosio_a1fe03e054c95360f2dd4e563aa49695b.html#a1fe03e054c95360f2dd4e563aa49695b">current_receiver</a>() {</div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a>{<a class="code hl_function" href="namespaceeosio_a1fe03e054c95360f2dd4e563aa49695b.html#a1fe03e054c95360f2dd4e563aa49695b">internal_use_do_not_use::current_receiver</a>()};</div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> }</div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
|
||||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a"> 170</a></span> <span class="keyword">inline</span> checksum256 <a class="code hl_function" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a">get_code_hash</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> account, <a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a>* full_result = <span class="keyword">nullptr</span> ) {</div>
|
||||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">if</span> (full_result == <span class="keyword">nullptr</span>)</div>
|
||||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> full_result = (<a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a>*)alloca(<span class="keyword">sizeof</span>(<a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a>));</div>
|
||||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keyword">constexpr</span> <span class="keywordtype">size_t</span> max_stack_buffer_size = 50;</div>
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
|
||||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="comment">// Packed size of this struct will virtually always be less than the struct size; always less after padding</span></div>
|
||||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">auto</span> struct_buffer_size = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structeosio_1_1code__hash__result.html">code_hash_result</a>);</div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordtype">char</span>* struct_buffer = (<span class="keywordtype">char</span>*)alloca(struct_buffer_size);</div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">using</span> VersionType = <span class="keyword">decltype</span>(<a class="code hl_variable" href="structeosio_1_1code__hash__result_a7dc9ef8535a1a92d5a12945c023c1563.html#a7dc9ef8535a1a92d5a12945c023c1563">code_hash_result::struct_version</a>);</div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">const</span> VersionType STRUCT_VERSION = 0;</div>
|
||||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">auto</span> response_size =</div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_function" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a">internal_use_do_not_use::get_code_hash</a>(account.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a>, STRUCT_VERSION, struct_buffer, struct_buffer_size);</div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// Safety check: in this case, response size should never exceed our buffer, but just in case...</span></div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordtype">bool</span> buffer_on_heap = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">if</span> (response_size > struct_buffer_size) {</div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// Slow path: allocate an adequate buffer and try again</span></div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// No need to deallocate struct_buffer since it was alloca'd</span></div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span> (response_size > max_stack_buffer_size) {</div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> struct_buffer = (<span class="keywordtype">char</span>*)malloc(response_size);</div>
|
||||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> buffer_on_heap = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> struct_buffer = (<span class="keywordtype">char</span>*)alloca(response_size);</div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <a class="code hl_function" href="namespaceeosio_a42e0876d95586115725e60f81b684b9a.html#a42e0876d95586115725e60f81b684b9a">internal_use_do_not_use::get_code_hash</a>(account.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a>, STRUCT_VERSION, struct_buffer, struct_buffer_size);</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> }</div>
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(unpack<VersionType>(struct_buffer, struct_buffer_size) == STRUCT_VERSION,</div>
|
||||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="stringliteral">"Hypervisor returned unexpected code hash struct version"</span>);</div>
|
||||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <a class="code hl_function" href="group__datastream_ga2ffaa5bd18836b7d40db601fb20965bb.html#ga2ffaa5bd18836b7d40db601fb20965bb">unpack</a>(*full_result, struct_buffer, struct_buffer_size);</div>
|
||||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="comment">// If struct_buffer is heap allocated, we must free it</span></div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">if</span> (buffer_on_heap)</div>
|
||||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> free(struct_buffer);</div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> full_result->code_hash;</div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> }</div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb"> 218</a></span> <span class="keyword">inline</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_function" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb">read_action_data</a>( <span class="keywordtype">void</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa83533278bab525701fa405485bb5390.html#aa83533278bab525701fa405485bb5390">len</a> ) {</div>
|
||||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__action_ga02dcd9ca25bcdd8279efe0d45e50c9eb.html#ga02dcd9ca25bcdd8279efe0d45e50c9eb">internal_use_do_not_use::read_action_data</a>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_aa83533278bab525701fa405485bb5390.html#aa83533278bab525701fa405485bb5390">len</a>);</div>
|
||||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> }</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0"> 227</a></span> <span class="keyword">inline</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_function" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0">action_data_size</a>() {</div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceeosio_a602640a08f02a893cab6b28016866ec0.html#a602640a08f02a893cab6b28016866ec0">internal_use_do_not_use::action_data_size</a>();</div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level.html"> 235</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a> {</div>
|
||||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_a5b23258308433be05a03ab4e2fce9b36.html#a5b23258308433be05a03ab4e2fce9b36"> 242</a></span> <a class="code hl_function" href="structeosio_1_1permission__level_a5b23258308433be05a03ab4e2fce9b36.html#a5b23258308433be05a03ab4e2fce9b36">permission_level</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> a, <a class="code hl_struct" href="structeosio_1_1name.html">name</a> p ):actor(a),<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ac956e7abe6f9a0aec8d5afce830c336a.html#ac956e7abe6f9a0aec8d5afce830c336a">permission</a>(p){}</div>
|
||||
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> </div>
|
||||
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_a80e38737c6e727a27e9ff7a195f74d5d.html#a80e38737c6e727a27e9ff7a195f74d5d"> 248</a></span> <a class="code hl_function" href="structeosio_1_1permission__level_a80e38737c6e727a27e9ff7a195f74d5d.html#a80e38737c6e727a27e9ff7a195f74d5d">permission_level</a>(){}</div>
|
||||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
|
||||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0"> 253</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>;</div>
|
||||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7"> 257</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a>;</div>
|
||||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
|
||||
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_a40e360b0bfdb5aa413812d5cb171ff51.html#a40e360b0bfdb5aa413812d5cb171ff51"> 267</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a2f1c46cd699cf27d007b60f941edaca0.html#a2f1c46cd699cf27d007b60f941edaca0">operator == </a>( <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& a, <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& b ) {</div>
|
||||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">return</span> std::tie( a.<a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>, a.<a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a> ) == std::tie( b.<a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>, b.<a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a> );</div>
|
||||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> }</div>
|
||||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
|
||||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"><a class="line" href="structeosio_1_1permission__level_a0e60ff070bbee22ee47e719e8b7757a1.html#a0e60ff070bbee22ee47e719e8b7757a1"> 279</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a3769e5e16987ccf2c510856696f38b9d.html#a3769e5e16987ccf2c510856696f38b9d">operator < </a>( <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& a, <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& b ) {</div>
|
||||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordflow">return</span> std::tie( a.<a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>, a.<a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a> ) < std::tie( b.<a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>, b.<a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a> );</div>
|
||||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> }</div>
|
||||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
|
||||
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <a class="code hl_define" href="group__serialize_gac39bf93bca023cc19379279456dac31f.html#gac39bf93bca023cc19379279456dac31f">EOSLIB_SERIALIZE</a>( <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>, (actor)(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ac956e7abe6f9a0aec8d5afce830c336a.html#ac956e7abe6f9a0aec8d5afce830c336a">permission</a>) )</div>
|
||||
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> };</div>
|
||||
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
|
||||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="group__action_gaa9c6bd255a286073e7dc8a337f2b11a2.html#gaa9c6bd255a286073e7dc8a337f2b11a2"> 292</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__action_ga47b4afe79f1de07376e2ecdd541f92c7.html#ga47b4afe79f1de07376e2ecdd541f92c7">require_auth</a>( <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& level ) {</div>
|
||||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> internal_use_do_not_use::require_auth2( level.<a class="code hl_variable" href="structeosio_1_1permission__level_ab5d07611f5ba5e7b5dff9e749c5696e0.html#ab5d07611f5ba5e7b5dff9e749c5696e0">actor</a>.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a>, level.<a class="code hl_variable" href="structeosio_1_1permission__level_af30baa92f0b3d6b611967c0dfb7555a7.html#af30baa92f0b3d6b611967c0dfb7555a7">permission</a>.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> }</div>
|
||||
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
|
||||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="group__action_ga9e4650a61bbe0809cc62e6b2af8252d3.html#ga9e4650a61bbe0809cc62e6b2af8252d3"> 302</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="group__action_ga9e4650a61bbe0809cc62e6b2af8252d3.html#ga9e4650a61bbe0809cc62e6b2af8252d3">has_auth</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> n ) {</div>
|
||||
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__action_ga9e4650a61bbe0809cc62e6b2af8252d3.html#ga9e4650a61bbe0809cc62e6b2af8252d3">internal_use_do_not_use::has_auth</a>( n.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> }</div>
|
||||
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> </div>
|
||||
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="group__action_ga887cd0fed2350c5ae52565ba6e290db3.html#ga887cd0fed2350c5ae52565ba6e290db3"> 312</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="group__action_ga887cd0fed2350c5ae52565ba6e290db3.html#ga887cd0fed2350c5ae52565ba6e290db3">is_account</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> n ) {</div>
|
||||
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__action_ga887cd0fed2350c5ae52565ba6e290db3.html#ga887cd0fed2350c5ae52565ba6e290db3">internal_use_do_not_use::is_account</a>( n.<a class="code hl_variable" href="structeosio_1_1name_adb309a6e132467ef2c53e953b56ebb52.html#adb309a6e132467ef2c53e953b56ebb52">value</a> );</div>
|
||||
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> }</div>
|
||||
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
|
||||
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="structeosio_1_1action.html"> 322</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1action.html">action</a> {</div>
|
||||
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a4fc65ee0b7c184e7fcb8cdf6242220af.html#a4fc65ee0b7c184e7fcb8cdf6242220af"> 326</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="structeosio_1_1action_a4fc65ee0b7c184e7fcb8cdf6242220af.html#a4fc65ee0b7c184e7fcb8cdf6242220af">account</a>;</div>
|
||||
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
|
||||
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a407ffb98514612d2e9683dd7d88af91a.html#a407ffb98514612d2e9683dd7d88af91a"> 331</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="structeosio_1_1action_a407ffb98514612d2e9683dd7d88af91a.html#a407ffb98514612d2e9683dd7d88af91a">name</a>;</div>
|
||||
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
|
||||
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a65851242b65f483e6b84d602d599f4e5.html#a65851242b65f483e6b84d602d599f4e5"> 336</a></span> std::vector<permission_level> <a class="code hl_variable" href="structeosio_1_1action_a65851242b65f483e6b84d602d599f4e5.html#a65851242b65f483e6b84d602d599f4e5">authorization</a>;</div>
|
||||
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
|
||||
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a51845c4ffbe1c97fc8d05115d05a3ab1.html#a51845c4ffbe1c97fc8d05115d05a3ab1"> 341</a></span> std::vector<char> <a class="code hl_variable" href="structeosio_1_1action_a51845c4ffbe1c97fc8d05115d05a3ab1.html#a51845c4ffbe1c97fc8d05115d05a3ab1">data</a>;</div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
|
||||
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="structeosio_1_1action_aebc29a38547efa71db8ec20cc56d69a4.html#aebc29a38547efa71db8ec20cc56d69a4"> 346</a></span> <a class="code hl_function" href="structeosio_1_1action_aebc29a38547efa71db8ec20cc56d69a4.html#aebc29a38547efa71db8ec20cc56d69a4">action</a>() = <span class="keywordflow">default</span>;</div>
|
||||
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> </div>
|
||||
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a9ef6c7fc0a06f53c754a1cc8af513d00.html#a9ef6c7fc0a06f53c754a1cc8af513d00"> 358</a></span> <a class="code hl_function" href="structeosio_1_1action_a9ef6c7fc0a06f53c754a1cc8af513d00.html#a9ef6c7fc0a06f53c754a1cc8af513d00">action</a>( <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& auth, <span class="keyword">struct</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> a, <span class="keyword">struct</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> n, T&& value )</div>
|
||||
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> :account(a), <a class="code hl_struct" href="structeosio_1_1name.html">name</a>(n), authorization(1,auth), data(<a class="code hl_function" href="group__datastream_ga13b3cd80e2641c0408f247c550e3d667.html#ga13b3cd80e2641c0408f247c550e3d667">pack</a>(std::forward<T>(value))) {}</div>
|
||||
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
|
||||
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"><a class="line" href="structeosio_1_1action_aa6b336f4f7a8c61d68e14d99a0a9cd9d.html#aa6b336f4f7a8c61d68e14d99a0a9cd9d"> 371</a></span> <a class="code hl_function" href="structeosio_1_1action_aa6b336f4f7a8c61d68e14d99a0a9cd9d.html#aa6b336f4f7a8c61d68e14d99a0a9cd9d">action</a>( std::vector<permission_level> auths, <span class="keyword">struct</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> a, <span class="keyword">struct</span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> n, T&& value )</div>
|
||||
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> :account(a), <a class="code hl_struct" href="structeosio_1_1name.html">name</a>(n), authorization(std::move(auths)), data(<a class="code hl_function" href="group__datastream_ga13b3cd80e2641c0408f247c550e3d667.html#ga13b3cd80e2641c0408f247c550e3d667">pack</a>(std::forward<T>(value))) {}</div>
|
||||
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
|
||||
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
|
||||
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <a class="code hl_define" href="group__serialize_gac39bf93bca023cc19379279456dac31f.html#gac39bf93bca023cc19379279456dac31f">EOSLIB_SERIALIZE</a>( <a class="code hl_struct" href="structeosio_1_1action.html">action</a>, (account)(<a class="code hl_struct" href="structeosio_1_1name.html">name</a>)(authorization)(data) )</div>
|
||||
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> </div>
|
||||
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
|
||||
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> </div>
|
||||
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> </div>
|
||||
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a447f36a63208c2d138b7109b3e13e55f.html#a447f36a63208c2d138b7109b3e13e55f"> 383</a></span> void send()<span class="keyword"> const </span>{</div>
|
||||
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keyword">auto</span> serialize = <a class="code hl_function" href="group__datastream_ga13b3cd80e2641c0408f247c550e3d667.html#ga13b3cd80e2641c0408f247c550e3d667">pack</a>(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> internal_use_do_not_use::send_inline(serialize.data(), serialize.size());</div>
|
||||
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> }</div>
|
||||
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> </div>
|
||||
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="structeosio_1_1action_a984a41daf2d1c4d6506cac0c98ac7a2a.html#a984a41daf2d1c4d6506cac0c98ac7a2a"> 393</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1action_a984a41daf2d1c4d6506cac0c98ac7a2a.html#a984a41daf2d1c4d6506cac0c98ac7a2a">send_context_free</a>()<span class="keyword"> const </span>{</div>
|
||||
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( authorization.size() == 0, <span class="stringliteral">"context free actions cannot have authorizations"</span>);</div>
|
||||
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keyword">auto</span> serialize = <a class="code hl_function" href="group__datastream_ga13b3cd80e2641c0408f247c550e3d667.html#ga13b3cd80e2641c0408f247c550e3d667">pack</a>(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> internal_use_do_not_use::send_context_free_inline(serialize.data(), serialize.size());</div>
|
||||
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> }</div>
|
||||
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
|
||||
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="structeosio_1_1action_ab10f4621dd9e24a33642d8fb240b1a01.html#ab10f4621dd9e24a33642d8fb240b1a01"> 406</a></span> T <a class="code hl_function" href="structeosio_1_1action_ab10f4621dd9e24a33642d8fb240b1a01.html#ab10f4621dd9e24a33642d8fb240b1a01">data_as</a>() {</div>
|
||||
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordflow">return</span> unpack<T>( &data[0], data.size() );</div>
|
||||
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> }</div>
|
||||
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> </div>
|
||||
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> };</div>
|
||||
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
|
||||
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> </div>
|
||||
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
|
||||
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keyword">namespace </span>detail {</div>
|
||||
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
|
||||
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
|
||||
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keyword">struct </span>unwrap { <span class="keyword">typedef</span> T type; };</div>
|
||||
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
|
||||
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keyword">struct </span>unwrap<ignore<T>> { <span class="keyword">typedef</span> T type; };</div>
|
||||
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
|
||||
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> Act, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="keyword">auto</span> get_args(R(Act::*p)(Args...)) {</div>
|
||||
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keywordflow">return</span> std::tuple<std::decay_t<typename unwrap<Args>::type>...>{};</div>
|
||||
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> }</div>
|
||||
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> </div>
|
||||
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> Act, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keyword">auto</span> get_args_nounwrap(R(Act::*p)(Args...)) {</div>
|
||||
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="keywordflow">return</span> std::tuple<std::decay_t<Args>...>{};</div>
|
||||
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> }</div>
|
||||
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> </div>
|
||||
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keyword">template</span> <auto Action></div>
|
||||
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keyword">using</span> deduced = <span class="keyword">decltype</span>(get_args(Action));</div>
|
||||
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
|
||||
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keyword">template</span> <auto Action></div>
|
||||
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keyword">using</span> deduced_nounwrap = <span class="keyword">decltype</span>(get_args_nounwrap(Action));</div>
|
||||
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
|
||||
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keyword">struct </span>convert { <span class="keyword">typedef</span> T type; };</div>
|
||||
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
|
||||
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keyword">template</span> <></div>
|
||||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keyword">struct </span>convert<const char*> { <span class="keyword">typedef</span> std::string type; };</div>
|
||||
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> </div>
|
||||
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">template</span> <></div>
|
||||
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keyword">struct </span>convert<char*> { <span class="keyword">typedef</span> std::string type; };</div>
|
||||
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> </div>
|
||||
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="keyword">struct </span>is_same { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> value = std::is_convertible<T,U>::value; };</div>
|
||||
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
|
||||
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keyword">template</span> <<span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keyword">struct </span>is_same<bool,U> { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> value = std::is_integral<U>::value; };</div>
|
||||
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> </div>
|
||||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keyword">struct </span>is_same<T,bool> { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> value = std::is_integral<T>::value; };</div>
|
||||
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> </div>
|
||||
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> N, <span class="keywordtype">size_t</span> I, <span class="keyword">auto</span> Arg, <span class="keyword">auto</span>... Args></div>
|
||||
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keyword">struct </span>get_nth_impl { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> value = get_nth_impl<N,I+1,Args...>::value; };</div>
|
||||
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
|
||||
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> N, <span class="keyword">auto</span> Arg, <span class="keyword">auto</span>... Args></div>
|
||||
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">struct </span>get_nth_impl<N, N, Arg, Args...> { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> value = Arg; };</div>
|
||||
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
|
||||
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> N, <span class="keyword">auto</span>... Args></div>
|
||||
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keyword">struct </span>get_nth { <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> value = get_nth_impl<N,0,Args...>::value; };</div>
|
||||
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
|
||||
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keyword">template</span> <<span class="keyword">auto</span> Action, <span class="keywordtype">size_t</span> I, <span class="keyword">typename</span> T, <span class="keyword">typename</span>... Rest></div>
|
||||
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keyword">struct </span>check_types {</div>
|
||||
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">static_assert</span>(detail::is_same<typename convert<T>::type, <span class="keyword">typename</span> convert<typename std::tuple_element<I, deduced<Action>>::type>::type>::value);</div>
|
||||
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">using</span> type = check_types<Action, I+1, Rest...>;</div>
|
||||
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> };</div>
|
||||
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keyword">template</span> <auto Action, <span class="keywordtype">size_t</span> I, <span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keyword">struct </span>check_types<Action, I, T> {</div>
|
||||
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keyword">static_assert</span>(detail::is_same<typename convert<T>::type, <span class="keyword">typename</span> convert<typename std::tuple_element<I, deduced<Action>>::type>::type>::value);</div>
|
||||
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> };</div>
|
||||
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> </div>
|
||||
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">template</span> <<span class="keyword">auto</span> Action, <span class="keyword">typename</span>... Ts></div>
|
||||
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> type_check() {</div>
|
||||
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keyword">static_assert</span>(<span class="keyword">sizeof</span>...(Ts) == std::tuple_size<deduced<Action>>::value);</div>
|
||||
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (<span class="keyword">sizeof</span>...(Ts) != 0)</div>
|
||||
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">return</span> check_types<Action, 0, Ts...>::value;</div>
|
||||
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> }</div>
|
||||
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
|
||||
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> }</div>
|
||||
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> </div>
|
||||
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keyword">template</span> <eosio::name::raw Name, auto Action></div>
|
||||
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper.html"> 506</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1action__wrapper.html" title="Обёртка для конкретного действия, упрощающая отправку встроенных (inline) действий к этому действию и...">action_wrapper</a> {</div>
|
||||
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a12ef4e4f5e9459ee02ea7113706f3147.html#a12ef4e4f5e9459ee02ea7113706f3147"> 508</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_a12ef4e4f5e9459ee02ea7113706f3147.html#a12ef4e4f5e9459ee02ea7113706f3147">action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, std::vector<eosio::permission_level>&& perms)</div>
|
||||
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions(std::move(perms)) {}</div>
|
||||
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> </div>
|
||||
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a333abd92bf1c6c965759a93ee9dc280b.html#a333abd92bf1c6c965759a93ee9dc280b"> 512</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_a333abd92bf1c6c965759a93ee9dc280b.html#a333abd92bf1c6c965759a93ee9dc280b">action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <span class="keyword">const</span> std::vector<eosio::permission_level>& perms)</div>
|
||||
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions(perms) {}</div>
|
||||
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> </div>
|
||||
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_af1be67f4109fb82bfcc18ad47a3f30ea.html#af1be67f4109fb82bfcc18ad47a3f30ea"> 516</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_af1be67f4109fb82bfcc18ad47a3f30ea.html#af1be67f4109fb82bfcc18ad47a3f30ea">action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <a class="code hl_struct" href="structeosio_1_1permission__level.html">eosio::permission_level</a>&& perm)</div>
|
||||
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions({1, std::move(perm)}) {}</div>
|
||||
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> </div>
|
||||
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a8b3fbccd819478987dbcba4362b1357f.html#a8b3fbccd819478987dbcba4362b1357f"> 520</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_a8b3fbccd819478987dbcba4362b1357f.html#a8b3fbccd819478987dbcba4362b1357f">action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">eosio::permission_level</a>& perm)</div>
|
||||
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions({1, perm}) {}</div>
|
||||
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> </div>
|
||||
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a5a8a0453c4d0e1233c05cb0749ae7807.html#a5a8a0453c4d0e1233c05cb0749ae7807"> 524</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_a5a8a0453c4d0e1233c05cb0749ae7807.html#a5a8a0453c4d0e1233c05cb0749ae7807">action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)</div>
|
||||
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)) {}</div>
|
||||
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
|
||||
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a5e378f05ff213113e35b9be105ff40a6.html#a5e378f05ff213113e35b9be105ff40a6"> 527</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a> action_name = <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a>(Name);</div>
|
||||
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a8bbb70cfa7ca6965bed97142c3e1c10d.html#a8bbb70cfa7ca6965bed97142c3e1c10d"> 528</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a> <a class="code hl_variable" href="structeosio_1_1action__wrapper_a8bbb70cfa7ca6965bed97142c3e1c10d.html#a8bbb70cfa7ca6965bed97142c3e1c10d">code_name</a>;</div>
|
||||
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_ae1e1b2dda09b7185e2f6ae7ec6acadf1.html#ae1e1b2dda09b7185e2f6ae7ec6acadf1"> 529</a></span> std::vector<eosio::permission_level> <a class="code hl_variable" href="structeosio_1_1action__wrapper_ae1e1b2dda09b7185e2f6ae7ec6acadf1.html#ae1e1b2dda09b7185e2f6ae7ec6acadf1">permissions</a>;</div>
|
||||
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> </div>
|
||||
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_a44ef1255c5018cdffb249665017fde8c.html#a44ef1255c5018cdffb249665017fde8c"> 531</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_a44ef1255c5018cdffb249665017fde8c.html#a44ef1255c5018cdffb249665017fde8c">get_mem_ptr</a>() {</div>
|
||||
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keywordflow">return</span> Action;</div>
|
||||
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> }</div>
|
||||
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> </div>
|
||||
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_ae422e0f1f06d13925a29dcac8f4457f1.html#ae422e0f1f06d13925a29dcac8f4457f1"> 536</a></span> <a class="code hl_struct" href="structeosio_1_1action.html">action</a> <a class="code hl_function" href="structeosio_1_1action__wrapper_ae422e0f1f06d13925a29dcac8f4457f1.html#ae422e0f1f06d13925a29dcac8f4457f1">to_action</a>(Args&&... args)<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="keyword">static_assert</span>(detail::type_check<Action, Args...>());</div>
|
||||
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structeosio_1_1action.html">action</a>(permissions, code_name, action_name, detail::deduced<Action>{std::forward<Args>(args)...});</div>
|
||||
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> }</div>
|
||||
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_aa7f4781b065eda40ba6803410f1b2eb1.html#aa7f4781b065eda40ba6803410f1b2eb1"> 541</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_aa7f4781b065eda40ba6803410f1b2eb1.html#aa7f4781b065eda40ba6803410f1b2eb1">send</a>(Args&&... args)<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> to_action(std::forward<Args>(args)...).send();</div>
|
||||
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> }</div>
|
||||
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> </div>
|
||||
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"><a class="line" href="structeosio_1_1action__wrapper_ae9fc18e5e6a4ca8a70120594aaab73e5.html#ae9fc18e5e6a4ca8a70120594aaab73e5"> 546</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1action__wrapper_ae9fc18e5e6a4ca8a70120594aaab73e5.html#ae9fc18e5e6a4ca8a70120594aaab73e5">send_context_free</a>(Args&&... args)<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> to_action(std::forward<Args>(args)...).send_context_free();</div>
|
||||
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> }</div>
|
||||
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> </div>
|
||||
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> };</div>
|
||||
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> </div>
|
||||
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keyword">template</span> <<a class="code hl_enumeration" href="structeosio_1_1name_a1d269720fd7434429216833187173656.html#a1d269720fd7434429216833187173656">eosio::name::raw</a> Name, <span class="keyword">auto</span>... Actions></div>
|
||||
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper.html"> 553</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1variant__action__wrapper.html">variant_action_wrapper</a> {</div>
|
||||
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a54b47e0e84c464142c902d7194426d3a.html#a54b47e0e84c464142c902d7194426d3a"> 555</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_a54b47e0e84c464142c902d7194426d3a.html#a54b47e0e84c464142c902d7194426d3a">variant_action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, std::vector<eosio::permission_level>&& perms)</div>
|
||||
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions(std::move(perms)) {}</div>
|
||||
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> </div>
|
||||
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_ae3836c99f199acd09f326c0788ad50ef.html#ae3836c99f199acd09f326c0788ad50ef"> 559</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_ae3836c99f199acd09f326c0788ad50ef.html#ae3836c99f199acd09f326c0788ad50ef">variant_action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <span class="keyword">const</span> std::vector<eosio::permission_level>& perms)</div>
|
||||
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions(perms) {}</div>
|
||||
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> </div>
|
||||
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a0d83dd58a99adffbba6bd026e47a211e.html#a0d83dd58a99adffbba6bd026e47a211e"> 563</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_a0d83dd58a99adffbba6bd026e47a211e.html#a0d83dd58a99adffbba6bd026e47a211e">variant_action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <a class="code hl_struct" href="structeosio_1_1permission__level.html">eosio::permission_level</a>&& perm)</div>
|
||||
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions({1, std::move(perm)}) {}</div>
|
||||
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> </div>
|
||||
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Code></div>
|
||||
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_ac6c4a0bc39c0e593277378526083c7cc.html#ac6c4a0bc39c0e593277378526083c7cc"> 567</a></span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_ac6c4a0bc39c0e593277378526083c7cc.html#ac6c4a0bc39c0e593277378526083c7cc">variant_action_wrapper</a>(Code&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">eosio::permission_level</a>& perm)</div>
|
||||
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> : code_name(std::forward<Code>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>)), permissions({1, perm}) {}</div>
|
||||
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> </div>
|
||||
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a4b90e84304c51bd96e69c165ef68b4f9.html#a4b90e84304c51bd96e69c165ef68b4f9"> 570</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a> action_name = <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a>(Name);</div>
|
||||
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a171691c13edf4f6269bb1eec44e290f3.html#a171691c13edf4f6269bb1eec44e290f3"> 571</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">eosio::name</a> <a class="code hl_variable" href="structeosio_1_1variant__action__wrapper_a171691c13edf4f6269bb1eec44e290f3.html#a171691c13edf4f6269bb1eec44e290f3">code_name</a>;</div>
|
||||
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_adec76a914d269cc458affb4c9a5123bd.html#adec76a914d269cc458affb4c9a5123bd"> 572</a></span> std::vector<eosio::permission_level> <a class="code hl_variable" href="structeosio_1_1variant__action__wrapper_adec76a914d269cc458affb4c9a5123bd.html#adec76a914d269cc458affb4c9a5123bd">permissions</a>;</div>
|
||||
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
|
||||
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> Variant></div>
|
||||
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_acc8f5998ff5d156eae85f525b0cb17e0.html#acc8f5998ff5d156eae85f525b0cb17e0"> 575</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_acc8f5998ff5d156eae85f525b0cb17e0.html#acc8f5998ff5d156eae85f525b0cb17e0">get_mem_ptr</a>() {</div>
|
||||
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keywordflow">return</span> detail::get_nth<Variant, Actions...>::value;</div>
|
||||
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> }</div>
|
||||
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> </div>
|
||||
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> Variant, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_afe014cc8e17701b610af9e2adcc76da7.html#afe014cc8e17701b610af9e2adcc76da7"> 580</a></span> <a class="code hl_struct" href="structeosio_1_1action.html">action</a> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_afe014cc8e17701b610af9e2adcc76da7.html#afe014cc8e17701b610af9e2adcc76da7">to_action</a>(Args&&... args)<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <span class="keyword">static_assert</span>(detail::type_check<detail::get_nth<Variant, Actions...>::value, Args...>());</div>
|
||||
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <a class="code hl_struct" href="structeosio_1_1unsigned__int.html">unsigned_int</a> var = Variant;</div>
|
||||
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structeosio_1_1action.html">action</a>(permissions, code_name, action_name, std::tuple_cat(std::make_tuple(var), detail::deduced<detail::get_nth<Variant, Actions...>::value>{std::forward<Args>(args)...}));</div>
|
||||
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> }</div>
|
||||
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> </div>
|
||||
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> </div>
|
||||
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> Variant, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a1f95cbb7f23a1790f0ddf67d2336dd03.html#a1f95cbb7f23a1790f0ddf67d2336dd03"> 588</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_a1f95cbb7f23a1790f0ddf67d2336dd03.html#a1f95cbb7f23a1790f0ddf67d2336dd03">send</a>(Args&&... args)<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> to_action<Variant>(std::forward<Args>(args)...).send();</div>
|
||||
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> }</div>
|
||||
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> </div>
|
||||
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> Variant, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"><a class="line" href="structeosio_1_1variant__action__wrapper_a4cf54eec122768c5dda66731eb1c0cd3.html#a4cf54eec122768c5dda66731eb1c0cd3"> 593</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1variant__action__wrapper_a4cf54eec122768c5dda66731eb1c0cd3.html#a4cf54eec122768c5dda66731eb1c0cd3">send_context_free</a>(Args&&... args)<span class="keyword"> const </span>{</div>
|
||||
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> to_action<Variant>(std::forward<Args>(args)...).send_context_free();</div>
|
||||
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> }</div>
|
||||
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
|
||||
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> };</div>
|
||||
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> </div>
|
||||
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="keyword">template</span><<span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"><a class="line" href="namespaceeosio_a0917f40ecb384d7934f7983351b397ce.html#a0917f40ecb384d7934f7983351b397ce"> 600</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespaceeosio_a0917f40ecb384d7934f7983351b397ce.html#a0917f40ecb384d7934f7983351b397ce">dispatch_inline</a>( <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <a class="code hl_struct" href="structeosio_1_1name.html">name</a> act,</div>
|
||||
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> std::vector<permission_level> perms,</div>
|
||||
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> std::tuple<Args...> args ) {</div>
|
||||
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <a class="code hl_struct" href="structeosio_1_1action.html">action</a>( perms, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, act, std::move(args) ).<a class="code hl_function" href="structeosio_1_1action_a447f36a63208c2d138b7109b3e13e55f.html#a447f36a63208c2d138b7109b3e13e55f">send</a>();</div>
|
||||
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
|
||||
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
|
||||
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="keyword">template</span><<span class="keyword">typename</span>, name::raw></div>
|
||||
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"><a class="line" href="structeosio_1_1inline__dispatcher.html"> 607</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1inline__dispatcher.html">inline_dispatcher</a>;</div>
|
||||
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> </div>
|
||||
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> </div>
|
||||
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="keyword">template</span><<span class="keyword">typename</span> T, <a class="code hl_enumeration" href="structeosio_1_1name_a1d269720fd7434429216833187173656.html#a1d269720fd7434429216833187173656">name::raw</a> Name, <span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"><a class="line" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4.html"> 611</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1inline__dispatcher.html">inline_dispatcher</a><void(T::*)(Args...), Name> {</div>
|
||||
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"><a class="line" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4_a8ccabfd180270a8128685eeaea33c75a.html#a8ccabfd180270a8128685eeaea33c75a"> 612</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4_a8ccabfd180270a8128685eeaea33c75a.html#a8ccabfd180270a8128685eeaea33c75a">call</a>(<a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <span class="keyword">const</span> <a class="code hl_struct" href="structeosio_1_1permission__level.html">permission_level</a>& perm, std::tuple<Args...> args) {</div>
|
||||
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <a class="code hl_function" href="namespaceeosio_a0917f40ecb384d7934f7983351b397ce.html#a0917f40ecb384d7934f7983351b397ce">dispatch_inline</a>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <a class="code hl_struct" href="structeosio_1_1name.html">name</a>(Name), std::vector<permission_level>(1, perm), std::move(args));</div>
|
||||
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> }</div>
|
||||
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"><a class="line" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4_a43a9a1084e226ca5e3b8f306174a18ef.html#a43a9a1084e226ca5e3b8f306174a18ef"> 615</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4_a43a9a1084e226ca5e3b8f306174a18ef.html#a43a9a1084e226ca5e3b8f306174a18ef">call</a>(<a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, std::vector<permission_level> perms, std::tuple<Args...> args) {</div>
|
||||
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> <a class="code hl_function" href="namespaceeosio_a0917f40ecb384d7934f7983351b397ce.html#a0917f40ecb384d7934f7983351b397ce">dispatch_inline</a>(<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>, <a class="code hl_struct" href="structeosio_1_1name.html">name</a>(Name), std::move(perms), std::move(args));</div>
|
||||
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> }</div>
|
||||
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> };</div>
|
||||
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> </div>
|
||||
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span>} <span class="comment">// namespace eosio</span></div>
|
||||
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
|
||||
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"><a class="line" href="action_8hpp_a20c19e0f931fad16c4db6d29480acddf.html#a20c19e0f931fad16c4db6d29480acddf"> 622</a></span><span class="preprocessor">#define INLINE_ACTION_SENDER3( CONTRACT_CLASS, FUNCTION_NAME, ACTION_NAME )\</span></div>
|
||||
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="preprocessor">::eosio::inline_dispatcher<decltype(&CONTRACT_CLASS::FUNCTION_NAME), ACTION_NAME>::call</span></div>
|
||||
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> </div>
|
||||
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"><a class="line" href="action_8hpp_abeecc07548f70308a4aab9fcdb2d22f1.html#abeecc07548f70308a4aab9fcdb2d22f1"> 625</a></span><span class="preprocessor">#define INLINE_ACTION_SENDER2( CONTRACT_CLASS, NAME )\</span></div>
|
||||
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span><span class="preprocessor">INLINE_ACTION_SENDER3( CONTRACT_CLASS, NAME, ::eosio::name(#NAME) )</span></div>
|
||||
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> </div>
|
||||
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="action_8hpp_a1bb288791cd436d07bddf3d43f4740d4.html#a1bb288791cd436d07bddf3d43f4740d4"> 628</a></span><span class="preprocessor">#define INLINE_ACTION_SENDER(...) BLUEGRASS_META_OVERLOAD(INLINE_ACTION_SENDER,__VA_ARGS__)(__VA_ARGS__)</span></div>
|
||||
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> </div>
|
||||
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"><a class="line" href="action_8hpp_a7c267f408db88d60ce0a5c74845596ee.html#a7c267f408db88d60ce0a5c74845596ee"> 656</a></span><span class="preprocessor">#define SEND_INLINE_ACTION( CONTRACT, NAME, ... )\</span></div>
|
||||
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span><span class="preprocessor">INLINE_ACTION_SENDER(std::decay_t<decltype(CONTRACT)>, NAME)( (CONTRACT).get_self(),__VA_ARGS__)</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_7e917b7566708c24627b3b828f138985.html">contracts</a></li><li class="navelem"><a class="el" href="dir_e6eaa0c1a89a74634a56cba5556371ea.html">eosio</a></li><li class="navelem"><a class="el" href="action_8hpp.html">action.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,220 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Классы</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('annotated.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Классы</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock">Классы с их кратким описанием.</div><div class="directory">
|
||||
<div class="levels">[уровень детализации <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceeosio.html" target="_self">eosio</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceeosio_1_1__datastream__detail.html" target="_self">_datastream_detail</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__datastream__detail_1_1is__datastream.html" target="_self">is_datastream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__datastream__detail_1_1is__datastream_3_01datastream_3_01_t_01_4_01_4.html" target="_self">is_datastream< datastream< T > ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceeosio_1_1__multi__index__detail.html" target="_self">_multi_index_detail</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_0_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__multi__index__detail_1_1secondary__index__db__functions.html" target="_self">secondary_index_db_functions</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__multi__index__detail_1_1secondary__key__traits.html" target="_self">secondary_key_traits</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_2_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01double_01_4.html" target="_self">secondary_key_traits< double ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01eosio_1_1fixed__bytes_3_0132_01_4_01_4.html" target="_self">secondary_key_traits< eosio::fixed_bytes< 32 > ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_1_4_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01long_01double_01_4.html" target="_self">secondary_key_traits< long double ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceeosio_1_1detail.html" target="_self">detail</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_2_0_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1detail_1_1largest__power.html" target="_self">largest_power</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_2_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1detail_1_1largest__power__helper.html" target="_self">largest_power_helper</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_2_2_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1detail_1_1largest__power__helper_3_01_t_00_01_base_00_01_exponent_00_01_value_00_01true_01_4.html" target="_self">largest_power_helper< T, Base, Exponent, Value, true ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_2_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1detail_1_1to__const__char__arr.html" target="_self">to_const_char_arr</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_3_" class="arrow" onclick="toggleFolder('0_3_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceeosio_1_1impl.html" target="_self">impl</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_3_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1impl_1_1concat__t.html" target="_self">concat_t</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_3_1_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1impl_1_1str__t.html" target="_self">str_t</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1action.html" target="_self">action</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_5_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1action__wrapper.html" target="_self">action_wrapper</a></td><td class="desc">Обёртка для конкретного действия, упрощающая отправку встроенных (inline) действий к этому действию из других контрактов. Пример: </td></tr>
|
||||
<tr id="row_0_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1asset.html" target="_self">asset</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_7_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1block__signing__authority__v0.html" target="_self">block_signing_authority_v0</a></td><td class="desc">взвешенное пороговое полномочие с несколькими подписями (multi-sig) </td></tr>
|
||||
<tr id="row_0_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1block__timestamp.html" target="_self">block_timestamp</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_9_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1blockchain__parameters.html" target="_self">blockchain_parameters</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1code__hash__result.html" target="_self">code_hash_result</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_11_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1const__mem__fun.html" target="_self">const_mem_fun</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_12_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1contract.html" target="_self">contract</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_13_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1datastream.html" target="_self">datastream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_14_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1datastream_3_01size__t_01_4.html" target="_self">datastream< size_t ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_15_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1ec__point.html" target="_self">ec_point</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_16_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1ec__point__view.html" target="_self">ec_point_view</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_17_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1extended__asset.html" target="_self">extended_asset</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_18_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1extended__symbol.html" target="_self">extended_symbol</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_19_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1fixed__bytes.html" target="_self">fixed_bytes</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_20_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1ignore.html" target="_self">ignore</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_21_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1ignore__wrapper.html" target="_self">ignore_wrapper</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_22_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1indexed__by.html" target="_self">indexed_by</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_23_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1inline__dispatcher.html" target="_self">inline_dispatcher</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_24_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4.html" target="_self">inline_dispatcher< void(T::*)(Args...), Name ></a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_25_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1iostream.html" target="_self">iostream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_26_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1key__weight.html" target="_self">key_weight</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_27_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1microseconds.html" target="_self">microseconds</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_28_" class="arrow" onclick="toggleFolder('0_28_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1multi__index.html" target="_self">multi_index</a></td><td class="desc">Определяет многоиндексную таблицу COOPOS (Multi Index Table) </td></tr>
|
||||
<tr id="row_0_28_0_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1multi__index_1_1const__iterator.html" target="_self">const_iterator</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_29_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1name.html" target="_self">name</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_30_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1onerror.html" target="_self">onerror</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_31_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1overloaded.html" target="_self">overloaded</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_32_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1permission__level.html" target="_self">permission_level</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_33_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1producer__authority.html" target="_self">producer_authority</a></td><td class="desc">Сопоставляет производителя с его ключом подписи </td></tr>
|
||||
<tr id="row_0_34_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1producer__key.html" target="_self">producer_key</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_35_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1producer__schedule.html" target="_self">producer_schedule</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_36_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1rope.html" target="_self">rope</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_37_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1security__group.html" target="_self">security_group</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_38_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1signed__int.html" target="_self">signed_int</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_39_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1singleton.html" target="_self">singleton</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_40_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1string.html" target="_self">string</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_41_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1symbol.html" target="_self">symbol</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_42_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1symbol__code.html" target="_self">symbol_code</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_43_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1time__point.html" target="_self">time_point</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_44_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1time__point__sec.html" target="_self">time_point_sec</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_45_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1transaction.html" target="_self">transaction</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_46_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classeosio_1_1transaction__header.html" target="_self">transaction_header</a></td><td class="desc">Содержит сведения о транзакции </td></tr>
|
||||
<tr id="row_0_47_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1unsigned__int.html" target="_self">unsigned_int</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_48_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeosio_1_1variant__action__wrapper.html" target="_self">variant_action_wrapper</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,71 @@
|
||||
var annotated_dup =
|
||||
[
|
||||
[ "eosio", "namespaceeosio.html", [
|
||||
[ "_datastream_detail", "namespaceeosio_1_1__datastream__detail.html", [
|
||||
[ "is_datastream", "structeosio_1_1__datastream__detail_1_1is__datastream.html", null ],
|
||||
[ "is_datastream< datastream< T > >", "structeosio_1_1__datastream__detail_1_1is__datastream_3_01datastream_3_01_t_01_4_01_4.html", null ]
|
||||
] ],
|
||||
[ "_multi_index_detail", "namespaceeosio_1_1__multi__index__detail.html", [
|
||||
[ "secondary_index_db_functions", "structeosio_1_1__multi__index__detail_1_1secondary__index__db__functions.html", null ],
|
||||
[ "secondary_key_traits", "structeosio_1_1__multi__index__detail_1_1secondary__key__traits.html", null ],
|
||||
[ "secondary_key_traits< double >", "structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01double_01_4.html", null ],
|
||||
[ "secondary_key_traits< eosio::fixed_bytes< 32 > >", "structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01eosio_1_1fixed__bytes_3_0132_01_4_01_4.html", null ],
|
||||
[ "secondary_key_traits< long double >", "structeosio_1_1__multi__index__detail_1_1secondary__key__traits_3_01long_01double_01_4.html", null ]
|
||||
] ],
|
||||
[ "detail", "namespaceeosio_1_1detail.html", [
|
||||
[ "largest_power", "structeosio_1_1detail_1_1largest__power.html", null ],
|
||||
[ "largest_power_helper", "structeosio_1_1detail_1_1largest__power__helper.html", null ],
|
||||
[ "largest_power_helper< T, Base, Exponent, Value, true >", "structeosio_1_1detail_1_1largest__power__helper_3_01_t_00_01_base_00_01_exponent_00_01_value_00_01true_01_4.html", null ],
|
||||
[ "to_const_char_arr", "structeosio_1_1detail_1_1to__const__char__arr.html", null ]
|
||||
] ],
|
||||
[ "impl", "namespaceeosio_1_1impl.html", [
|
||||
[ "concat_t", "structeosio_1_1impl_1_1concat__t.html", "structeosio_1_1impl_1_1concat__t" ],
|
||||
[ "str_t", "structeosio_1_1impl_1_1str__t.html", "structeosio_1_1impl_1_1str__t" ]
|
||||
] ],
|
||||
[ "action", "structeosio_1_1action.html", "structeosio_1_1action" ],
|
||||
[ "action_wrapper", "structeosio_1_1action__wrapper.html", "structeosio_1_1action__wrapper" ],
|
||||
[ "asset", "structeosio_1_1asset.html", "structeosio_1_1asset" ],
|
||||
[ "block_signing_authority_v0", "structeosio_1_1block__signing__authority__v0.html", "structeosio_1_1block__signing__authority__v0" ],
|
||||
[ "block_timestamp", "classeosio_1_1block__timestamp.html", "classeosio_1_1block__timestamp" ],
|
||||
[ "blockchain_parameters", "structeosio_1_1blockchain__parameters.html", "structeosio_1_1blockchain__parameters" ],
|
||||
[ "code_hash_result", "structeosio_1_1code__hash__result.html", "structeosio_1_1code__hash__result" ],
|
||||
[ "const_mem_fun", "structeosio_1_1const__mem__fun.html", "structeosio_1_1const__mem__fun" ],
|
||||
[ "contract", "classeosio_1_1contract.html", "classeosio_1_1contract" ],
|
||||
[ "datastream", "classeosio_1_1datastream.html", "classeosio_1_1datastream" ],
|
||||
[ "datastream< size_t >", "classeosio_1_1datastream_3_01size__t_01_4.html", "classeosio_1_1datastream_3_01size__t_01_4" ],
|
||||
[ "ec_point", "structeosio_1_1ec__point.html", "structeosio_1_1ec__point" ],
|
||||
[ "ec_point_view", "structeosio_1_1ec__point__view.html", "structeosio_1_1ec__point__view" ],
|
||||
[ "extended_asset", "structeosio_1_1extended__asset.html", "structeosio_1_1extended__asset" ],
|
||||
[ "extended_symbol", "classeosio_1_1extended__symbol.html", "classeosio_1_1extended__symbol" ],
|
||||
[ "fixed_bytes", "classeosio_1_1fixed__bytes.html", "classeosio_1_1fixed__bytes" ],
|
||||
[ "ignore", "structeosio_1_1ignore.html", null ],
|
||||
[ "ignore_wrapper", "structeosio_1_1ignore__wrapper.html", "structeosio_1_1ignore__wrapper" ],
|
||||
[ "indexed_by", "structeosio_1_1indexed__by.html", "structeosio_1_1indexed__by" ],
|
||||
[ "inline_dispatcher", "structeosio_1_1inline__dispatcher.html", null ],
|
||||
[ "inline_dispatcher< void(T::*)(Args...), Name >", "structeosio_1_1inline__dispatcher_3_01void_07_t_1_1_5_08_07_args_8_8_8_08_00_01_name_01_4.html", null ],
|
||||
[ "iostream", "classeosio_1_1iostream.html", null ],
|
||||
[ "key_weight", "structeosio_1_1key__weight.html", "structeosio_1_1key__weight" ],
|
||||
[ "microseconds", "classeosio_1_1microseconds.html", "classeosio_1_1microseconds" ],
|
||||
[ "multi_index", "classeosio_1_1multi__index.html", "classeosio_1_1multi__index" ],
|
||||
[ "name", "structeosio_1_1name.html", "structeosio_1_1name" ],
|
||||
[ "onerror", "structeosio_1_1onerror.html", "structeosio_1_1onerror" ],
|
||||
[ "overloaded", "structeosio_1_1overloaded.html", null ],
|
||||
[ "permission_level", "structeosio_1_1permission__level.html", "structeosio_1_1permission__level" ],
|
||||
[ "producer_authority", "structeosio_1_1producer__authority.html", "structeosio_1_1producer__authority" ],
|
||||
[ "producer_key", "structeosio_1_1producer__key.html", "structeosio_1_1producer__key" ],
|
||||
[ "producer_schedule", "structeosio_1_1producer__schedule.html", "structeosio_1_1producer__schedule" ],
|
||||
[ "rope", "classeosio_1_1rope.html", "classeosio_1_1rope" ],
|
||||
[ "security_group", "structeosio_1_1security__group.html", "structeosio_1_1security__group" ],
|
||||
[ "signed_int", "structeosio_1_1signed__int.html", "structeosio_1_1signed__int" ],
|
||||
[ "singleton", "classeosio_1_1singleton.html", "classeosio_1_1singleton" ],
|
||||
[ "string", "classeosio_1_1string.html", "classeosio_1_1string" ],
|
||||
[ "symbol", "classeosio_1_1symbol.html", "classeosio_1_1symbol" ],
|
||||
[ "symbol_code", "classeosio_1_1symbol__code.html", "classeosio_1_1symbol__code" ],
|
||||
[ "time_point", "classeosio_1_1time__point.html", "classeosio_1_1time__point" ],
|
||||
[ "time_point_sec", "classeosio_1_1time__point__sec.html", "classeosio_1_1time__point__sec" ],
|
||||
[ "transaction", "classeosio_1_1transaction.html", "classeosio_1_1transaction" ],
|
||||
[ "transaction_header", "classeosio_1_1transaction__header.html", "classeosio_1_1transaction__header" ],
|
||||
[ "unsigned_int", "structeosio_1_1unsigned__int.html", "structeosio_1_1unsigned__int" ],
|
||||
[ "variant_action_wrapper", "structeosio_1_1variant__action__wrapper.html", "structeosio_1_1variant__action__wrapper" ]
|
||||
] ]
|
||||
];
|
||||
@@ -0,0 +1,183 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Файл libraries/eosiolib/core/eosio/asset.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('asset_8hpp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Классы</a> |
|
||||
<a href="#namespaces">Пространства имен</a> |
|
||||
<a href="#func-members">Функции</a> </div>
|
||||
<div class="headertitle"><div class="title">Файл asset.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><code>#include "<a class="el" href="serialize_8hpp_source.html">serialize.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="print_8hpp_source.html">print.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="check_8hpp_source.html">check.hpp</a>"</code><br />
|
||||
<code>#include "<a class="el" href="symbol_8hpp_source.html">symbol.hpp</a>"</code><br />
|
||||
<code>#include <tuple></code><br />
|
||||
<code>#include <limits></code><br />
|
||||
</div>
|
||||
<p><a href="asset_8hpp_source.html">См. исходные тексты.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Классы</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1asset.html">eosio::asset</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structeosio_1_1extended__asset.html">eosio::extended_asset</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Пространства имен</h2></td></tr>
|
||||
<tr class="memitem:namespaceeosio"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio.html">eosio</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Функции</h2></td></tr>
|
||||
<tr class="memitem:a0620d4ec6f522f17350db97ac3c14840"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_a0620d4ec6f522f17350db97ac3c14840.html#a0620d4ec6f522f17350db97ac3c14840">eosio::write_decimal</a> (char *begin, char *end, bool dry_run, uint64_t number, uint8_t num_decimal_places, bool negative)</td></tr>
|
||||
<tr class="separator:a0620d4ec6f522f17350db97ac3c14840"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="asset_8hpp.html">asset.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
var asset_8hpp =
|
||||
[
|
||||
[ "write_decimal", "asset_8hpp.html#a0620d4ec6f522f17350db97ac3c14840", null ]
|
||||
];
|
||||
@@ -0,0 +1,446 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Исходный файл libraries/eosiolib/core/eosio/asset.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('asset_8hpp_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">asset.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="asset_8hpp.html">См. документацию.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span> </div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#include "<a class="code" href="serialize_8hpp.html">serialize.hpp</a>"</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include "<a class="code" href="print_8hpp.html">print.hpp</a>"</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include "<a class="code" href="check_8hpp.html">check.hpp</a>"</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include "<a class="code" href="symbol_8hpp.html">symbol.hpp</a>"</span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include <tuple></span></div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include <limits></span></div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"><a class="line" href="namespaceeosio.html"> 11</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceeosio.html">eosio</a> {</div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="namespaceeosio_a0620d4ec6f522f17350db97ac3c14840.html#a0620d4ec6f522f17350db97ac3c14840"> 13</a></span> <span class="keywordtype">char</span>* <a class="code hl_function" href="namespaceeosio_a0620d4ec6f522f17350db97ac3c14840.html#a0620d4ec6f522f17350db97ac3c14840">write_decimal</a>( <span class="keywordtype">char</span>* begin, <span class="keywordtype">char</span>* end, <span class="keywordtype">bool</span> dry_run, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> number, uint8_t num_decimal_places, <span class="keywordtype">bool</span> negative );</div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="structeosio_1_1asset.html"> 26</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1asset.html">asset</a> {</div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255"> 30</a></span> int64_t <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> = 0;</div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a374520d98a22f5a89a26025154944756.html#a374520d98a22f5a89a26025154944756"> 35</a></span> <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a> <a class="code hl_variable" href="structeosio_1_1asset_a374520d98a22f5a89a26025154944756.html#a374520d98a22f5a89a26025154944756">symbol</a>;</div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f"> 40</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> int64_t <a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a> = (1LL << 62) - 1;</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845"> 42</a></span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>() {}</div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_abb4cf1f370bb101c7d61910ff45d6b55.html#abb4cf1f370bb101c7d61910ff45d6b55"> 50</a></span> <a class="code hl_function" href="structeosio_1_1asset_abb4cf1f370bb101c7d61910ff45d6b55.html#abb4cf1f370bb101c7d61910ff45d6b55">asset</a>( int64_t a, <span class="keyword">class</span> <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a> s )</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> :<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>(a),<a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>{s}</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> {</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( <a class="code hl_function" href="structeosio_1_1asset_a815b58378c8849fbb2a68f288edf5f31.html#a815b58378c8849fbb2a68f288edf5f31">is_amount_within_range</a>(), <span class="stringliteral">"magnitude of asset amount must be less than 2^62"</span> );</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_af52f86a82390abe6be09e9745df30815.html#af52f86a82390abe6be09e9745df30815">is_valid</a>(), <span class="stringliteral">"invalid symbol name"</span> );</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a815b58378c8849fbb2a68f288edf5f31.html#a815b58378c8849fbb2a68f288edf5f31"> 63</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structeosio_1_1asset_a815b58378c8849fbb2a68f288edf5f31.html#a815b58378c8849fbb2a68f288edf5f31">is_amount_within_range</a>()<span class="keyword">const </span>{ <span class="keywordflow">return</span> -<a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> && <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a>; }</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_aa2e8739bf534ea99199d121143ca7a0a.html#aa2e8739bf534ea99199d121143ca7a0a"> 71</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structeosio_1_1asset_aa2e8739bf534ea99199d121143ca7a0a.html#aa2e8739bf534ea99199d121143ca7a0a">is_valid</a>()<span class="keyword">const </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="structeosio_1_1asset_a815b58378c8849fbb2a68f288edf5f31.html#a815b58378c8849fbb2a68f288edf5f31">is_amount_within_range</a>() && <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_af52f86a82390abe6be09e9745df30815.html#af52f86a82390abe6be09e9745df30815">is_valid</a>(); }</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a0b6c8ba10eedc0129364fc910e840d7f.html#a0b6c8ba10eedc0129364fc910e840d7f"> 78</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1asset_a0b6c8ba10eedc0129364fc910e840d7f.html#a0b6c8ba10eedc0129364fc910e840d7f">set_amount</a>( int64_t a ) {</div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> = a;</div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( <a class="code hl_function" href="structeosio_1_1asset_a815b58378c8849fbb2a68f288edf5f31.html#a815b58378c8849fbb2a68f288edf5f31">is_amount_within_range</a>(), <span class="stringliteral">"magnitude of asset amount must be less than 2^62"</span> );</div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_struct" href="structeosio_1_1asset.html">asset</a> operator-()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_struct" href="structeosio_1_1asset.html">asset</a> r = *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> r.<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> = -r.<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>;</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">return</span> r;</div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& operator-=( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a ) {</div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == <a class="code hl_variable" href="structeosio_1_1asset_a374520d98a22f5a89a26025154944756.html#a374520d98a22f5a89a26025154944756">symbol</a>, <span class="stringliteral">"attempt to subtract asset with different symbol"</span> );</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> -= a.amount;</div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( -<a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>, <span class="stringliteral">"subtraction underflow"</span> );</div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a>, <span class="stringliteral">"subtraction overflow"</span> );</div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
|
||||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& operator+=( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a ) {</div>
|
||||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == <a class="code hl_variable" href="structeosio_1_1asset_a374520d98a22f5a89a26025154944756.html#a374520d98a22f5a89a26025154944756">symbol</a>, <span class="stringliteral">"attempt to add asset with different symbol"</span> );</div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> += a.amount;</div>
|
||||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( -<a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>, <span class="stringliteral">"addition underflow"</span> );</div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> <= <a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a>, <span class="stringliteral">"addition overflow"</span> );</div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> }</div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_function" href="namespaceeosio_a76c9eef0a1a07d3dd3c924e6f302bf1c.html#a76c9eef0a1a07d3dd3c924e6f302bf1c">operator+</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> = a;</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> += b;</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a>;</div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> operator-( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> = a;</div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> -= b;</div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a>;</div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
|
||||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
|
||||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& operator*=( int64_t a ) {</div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> int128_t tmp = (int128_t)<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> * (int128_t)a;</div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( tmp <= <a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a>, <span class="stringliteral">"multiplication overflow"</span> );</div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( tmp >= -<a class="code hl_variable" href="structeosio_1_1asset_a478eb6a3bb302652748acfcf85738f5f.html#a478eb6a3bb302652748acfcf85738f5f">max_amount</a>, <span class="stringliteral">"multiplication underflow"</span> );</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> = (int64_t)tmp;</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> }</div>
|
||||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
|
||||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> operator*( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, int64_t b ) {</div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> = a;</div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> *= b;</div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a>;</div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> }</div>
|
||||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
|
||||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> operator*( int64_t b, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a ) {</div>
|
||||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> = a;</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> *= b;</div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a>;</div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> }</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& operator/=( int64_t a ) {</div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a != 0, <span class="stringliteral">"divide by zero"</span> );</div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( !(<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> == std::numeric_limits<int64_t>::min() && a == -1), <span class="stringliteral">"signed division overflow"</span> );</div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> /= a;</div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> }</div>
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> operator/( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, int64_t b ) {</div>
|
||||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> = a;</div>
|
||||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a> /= b;</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ab8c965fa59dd909d6c40c9663d0e88a9.html#ab8c965fa59dd909d6c40c9663d0e88a9">result</a>;</div>
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> }</div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
|
||||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">friend</span> int64_t operator/( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( b.amount != 0, <span class="stringliteral">"divide by zero"</span> );</div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"attempt to divide assets with different symbol"</span> );</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">return</span> a.amount / b.amount;</div>
|
||||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> }</div>
|
||||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> </div>
|
||||
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a2f1c46cd699cf27d007b60f941edaca0.html#a2f1c46cd699cf27d007b60f941edaca0">operator==</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"comparison of assets with different symbols is not allowed"</span> );</div>
|
||||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keywordflow">return</span> a.amount == b.amount;</div>
|
||||
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> }</div>
|
||||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
|
||||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a14b4435561885695942e8d60b7d5e7b7.html#a14b4435561885695942e8d60b7d5e7b7">operator!=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">return</span> !( a == b);</div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> }</div>
|
||||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
|
||||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a3769e5e16987ccf2c510856696f38b9d.html#a3769e5e16987ccf2c510856696f38b9d">operator<</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"comparison of assets with different symbols is not allowed"</span> );</div>
|
||||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">return</span> a.amount < b.amount;</div>
|
||||
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> }</div>
|
||||
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
|
||||
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a80fdc59744805f578b1947990dc03372.html#a80fdc59744805f578b1947990dc03372">operator<=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"comparison of assets with different symbols is not allowed"</span> );</div>
|
||||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> a.amount <= b.amount;</div>
|
||||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> }</div>
|
||||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
|
||||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_ab9a725e824a4b42a2a4a23b994289061.html#ab9a725e824a4b42a2a4a23b994289061">operator></a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"comparison of assets with different symbols is not allowed"</span> );</div>
|
||||
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keywordflow">return</span> a.amount > b.amount;</div>
|
||||
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> }</div>
|
||||
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
|
||||
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_ab403fc37b2c295133b5be19cfc548c4a.html#ab403fc37b2c295133b5be19cfc548c4a">operator>=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1asset_abdde8d4b53c1b8f1027ab6cb2b13b845.html#abdde8d4b53c1b8f1027ab6cb2b13b845">asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.symbol == b.symbol, <span class="stringliteral">"comparison of assets with different symbols is not allowed"</span> );</div>
|
||||
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> a.amount >= b.amount;</div>
|
||||
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> }</div>
|
||||
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
|
||||
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> </div>
|
||||
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a5e90d7716bca208014477a1e9c9af7dc.html#a5e90d7716bca208014477a1e9c9af7dc"> 335</a></span> <span class="keywordtype">char</span>* <a class="code hl_function" href="structeosio_1_1asset_a5e90d7716bca208014477a1e9c9af7dc.html#a5e90d7716bca208014477a1e9c9af7dc" title="Записывает asset в виде строки в переданный буфер char.">write_as_string</a>( <span class="keywordtype">char</span>* begin, <span class="keywordtype">char</span>* end, <span class="keywordtype">bool</span> dry_run = <span class="keyword">false</span> )<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordtype">bool</span> negative = (<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> < 0);</div>
|
||||
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> abs_amount = <span class="keyword">static_cast<</span><a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a><span class="keyword">></span>(negative ? -<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a> : <a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>);</div>
|
||||
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="comment">// 0 <= abs_amount <= std::numeric_limits<int64_t>::max() < 10^19 < std::numeric_limits<uint64_t>::max()</span></div>
|
||||
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
|
||||
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> uint8_t precision = <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_af2153bf9cfc5bd79c3f1787f8028646a.html#af2153bf9cfc5bd79c3f1787f8028646a">precision</a>();</div>
|
||||
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> </div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keywordtype">int</span> sufficient_size = std::max(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(precision), 19) + 11;</div>
|
||||
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keywordflow">if</span>( dry_run || (begin + sufficient_size < begin) || (begin + sufficient_size > end) ) {</div>
|
||||
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keywordtype">char</span>* start_of_symbol = <a class="code hl_function" href="namespaceeosio_a0620d4ec6f522f17350db97ac3c14840.html#a0620d4ec6f522f17350db97ac3c14840">write_decimal</a>( begin, end, <span class="keyword">true</span>, abs_amount, precision, negative ) + 1;</div>
|
||||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keywordtype">char</span>* actual_end = <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_a559c818f42e9d0df1a4c4823d7c6ecd8.html#a559c818f42e9d0df1a4c4823d7c6ecd8">code</a>().<a class="code hl_function" href="classeosio_1_1symbol__code_a65ea077da3315b0a94ad0e9478911efc.html#a65ea077da3315b0a94ad0e9478911efc" title="Записывает symbol_code в виде строки в переданный буфер char.">write_as_string</a>( start_of_symbol, end, <span class="keyword">true</span> );</div>
|
||||
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">if</span>( dry_run || (actual_end < begin) || (actual_end > end) ) <span class="keywordflow">return</span> actual_end;</div>
|
||||
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> }</div>
|
||||
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> </div>
|
||||
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordtype">char</span>* end_of_number = <a class="code hl_function" href="namespaceeosio_a0620d4ec6f522f17350db97ac3c14840.html#a0620d4ec6f522f17350db97ac3c14840">write_decimal</a>( begin, end, <span class="keyword">false</span>, abs_amount, precision, negative );</div>
|
||||
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> *(end_of_number) = <span class="charliteral">' '</span>;</div>
|
||||
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
|
||||
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_a559c818f42e9d0df1a4c4823d7c6ecd8.html#a559c818f42e9d0df1a4c4823d7c6ecd8">code</a>().<a class="code hl_function" href="classeosio_1_1symbol__code_a65ea077da3315b0a94ad0e9478911efc.html#a65ea077da3315b0a94ad0e9478911efc" title="Записывает symbol_code в виде строки в переданный буфер char.">write_as_string</a>( end_of_number + 1, end );</div>
|
||||
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> }</div>
|
||||
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
|
||||
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a1c0dbeb4348006fa622e2b5d06431554.html#a1c0dbeb4348006fa622e2b5d06431554"> 360</a></span> std::string <a class="code hl_function" href="structeosio_1_1asset_a1c0dbeb4348006fa622e2b5d06431554.html#a1c0dbeb4348006fa622e2b5d06431554" title="Преобразование asset в std::string.">to_string</a>()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a> = std::max(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_af2153bf9cfc5bd79c3f1787f8028646a.html#af2153bf9cfc5bd79c3f1787f8028646a">precision</a>()), 19) + 11;</div>
|
||||
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="keywordtype">char</span> buffer[<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a>];</div>
|
||||
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordtype">char</span>* end = <a class="code hl_function" href="structeosio_1_1asset_a5e90d7716bca208014477a1e9c9af7dc.html#a5e90d7716bca208014477a1e9c9af7dc" title="Записывает asset в виде строки в переданный буфер char.">write_as_string</a>( buffer, buffer + <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a> );</div>
|
||||
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>( end <= buffer + <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a>, <span class="stringliteral">"insufficient space in buffer"</span> ); <span class="comment">// should never fail</span></div>
|
||||
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> </div>
|
||||
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">return</span> {buffer, end};</div>
|
||||
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> }</div>
|
||||
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
|
||||
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="structeosio_1_1asset_a111a52097d1761898d5641536c308416.html#a111a52097d1761898d5641536c308416"> 374</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1asset_a111a52097d1761898d5641536c308416.html#a111a52097d1761898d5641536c308416" title="Вывод asset.">print</a>()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a> = std::max(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>.<a class="code hl_function" href="classeosio_1_1symbol_af2153bf9cfc5bd79c3f1787f8028646a.html#af2153bf9cfc5bd79c3f1787f8028646a">precision</a>()), 19) + 11;</div>
|
||||
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordtype">char</span> buffer[<a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a>];</div>
|
||||
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordtype">char</span>* end = <a class="code hl_function" href="structeosio_1_1asset_a5e90d7716bca208014477a1e9c9af7dc.html#a5e90d7716bca208014477a1e9c9af7dc" title="Записывает asset в виде строки в переданный буфер char.">write_as_string</a>( buffer, buffer + <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a> );</div>
|
||||
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>( end <= buffer + <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_ae6703efb9c09cd5c00bf70eee2bbd9e0.html#ae6703efb9c09cd5c00bf70eee2bbd9e0">buffer_size</a>, <span class="stringliteral">"insufficient space in buffer"</span> ); <span class="comment">// should never fail</span></div>
|
||||
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> </div>
|
||||
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <span class="keywordflow">if</span>( buffer < end )</div>
|
||||
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <a class="code hl_function" href="group__console_ga7abae4d32d4fec590c9988a6aec88cec.html#ga7abae4d32d4fec590c9988a6aec88cec">printl</a>( buffer, (end-buffer) );</div>
|
||||
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> }</div>
|
||||
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
|
||||
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <a class="code hl_define" href="group__serialize_gac39bf93bca023cc19379279456dac31f.html#gac39bf93bca023cc19379279456dac31f">EOSLIB_SERIALIZE</a>( <a class="code hl_struct" href="structeosio_1_1asset.html">asset</a>, (<a class="code hl_variable" href="structeosio_1_1asset_ac76c16a58851550706c6709698ed7255.html#ac76c16a58851550706c6709698ed7255">amount</a>)(<a class="code hl_class" href="classeosio_1_1symbol.html">symbol</a>) )</div>
|
||||
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> };</div>
|
||||
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
|
||||
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset.html"> 392</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structeosio_1_1extended__asset.html">extended_asset</a> {</div>
|
||||
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7"> 396</a></span> <a class="code hl_struct" href="structeosio_1_1asset.html">asset</a> <a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>;</div>
|
||||
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
|
||||
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_acac503620c8c59864b065360fb50868b.html#acac503620c8c59864b065360fb50868b"> 401</a></span> <a class="code hl_struct" href="structeosio_1_1name.html">name</a> <a class="code hl_variable" href="structeosio_1_1extended__asset_acac503620c8c59864b065360fb50868b.html#acac503620c8c59864b065360fb50868b">contract</a>;</div>
|
||||
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> </div>
|
||||
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_a7604109863c6d45bc54347c27bd632a4.html#a7604109863c6d45bc54347c27bd632a4"> 408</a></span> <a class="code hl_class" href="classeosio_1_1extended__symbol.html">extended_symbol</a> <a class="code hl_function" href="structeosio_1_1extended__asset_a7604109863c6d45bc54347c27bd632a4.html#a7604109863c6d45bc54347c27bd632a4">get_extended_symbol</a>()<span class="keyword">const </span>{ <span class="keywordflow">return</span> <a class="code hl_class" href="classeosio_1_1extended__symbol.html">extended_symbol</a>{ <a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>.<a class="code hl_variable" href="structeosio_1_1asset_a374520d98a22f5a89a26025154944756.html#a374520d98a22f5a89a26025154944756">symbol</a>, <a class="code hl_class" href="classeosio_1_1contract.html">contract</a> }; }</div>
|
||||
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> </div>
|
||||
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2"> 413</a></span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>() = <span class="keywordflow">default</span>;</div>
|
||||
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> </div>
|
||||
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_a831a169f25c972af14a01e0305ab8d74.html#a831a169f25c972af14a01e0305ab8d74"> 418</a></span> <a class="code hl_function" href="structeosio_1_1extended__asset_a831a169f25c972af14a01e0305ab8d74.html#a831a169f25c972af14a01e0305ab8d74">extended_asset</a>( int64_t v, <a class="code hl_class" href="classeosio_1_1extended__symbol.html">extended_symbol</a> s ):<a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>(v,s.get_symbol()),<a class="code hl_class" href="classeosio_1_1contract.html">contract</a>(s.get_contract()){}</div>
|
||||
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_a29f3c5f054f754ab4fac481cce633682.html#a29f3c5f054f754ab4fac481cce633682"> 422</a></span> <a class="code hl_function" href="structeosio_1_1extended__asset_a29f3c5f054f754ab4fac481cce633682.html#a29f3c5f054f754ab4fac481cce633682">extended_asset</a>( <a class="code hl_struct" href="structeosio_1_1asset.html">asset</a> a, <a class="code hl_struct" href="structeosio_1_1name.html">name</a> c ):<a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>(a),<a class="code hl_class" href="classeosio_1_1contract.html">contract</a>(c){}</div>
|
||||
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
|
||||
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="structeosio_1_1extended__asset_af5993cb01622505de48870ba728cec3b.html#af5993cb01622505de48870ba728cec3b"> 427</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structeosio_1_1extended__asset_af5993cb01622505de48870ba728cec3b.html#af5993cb01622505de48870ba728cec3b">print</a>()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>.<a class="code hl_function" href="structeosio_1_1asset_a111a52097d1761898d5641536c308416.html#a111a52097d1761898d5641536c308416" title="Вывод asset.">print</a>();</div>
|
||||
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_function" href="group__console_gaa0a56fe314d032d027a1565d93a68b21.html#gaa0a56fe314d032d027a1565d93a68b21">::eosio::print</a>(<span class="stringliteral">"@"</span>, <a class="code hl_class" href="classeosio_1_1contract.html">contract</a>);</div>
|
||||
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> }</div>
|
||||
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
|
||||
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> </div>
|
||||
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="comment">// Унарный минус</span></div>
|
||||
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <a class="code hl_struct" href="structeosio_1_1extended__asset.html">extended_asset</a> operator-()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordflow">return</span> {-<a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>, <a class="code hl_class" href="classeosio_1_1contract.html">contract</a>};</div>
|
||||
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> }</div>
|
||||
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
|
||||
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// Оператор вычитания</span></div>
|
||||
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a> operator - ( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">return</span> {a.quantity - b.quantity, a.contract};</div>
|
||||
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> }</div>
|
||||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
|
||||
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="comment">// Оператор сложения</span></div>
|
||||
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a> <a class="code hl_function" href="namespaceeosio_a76c9eef0a1a07d3dd3c924e6f302bf1c.html#a76c9eef0a1a07d3dd3c924e6f302bf1c">operator + </a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordflow">return</span> {a.quantity + b.quantity, a.contract};</div>
|
||||
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> }</div>
|
||||
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> </div>
|
||||
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& operator+=( <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> a.quantity += b.quantity;</div>
|
||||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="keywordflow">return</span> a;</div>
|
||||
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> }</div>
|
||||
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> </div>
|
||||
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& operator-=( <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> a.quantity -= b.quantity;</div>
|
||||
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordflow">return</span> a;</div>
|
||||
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> }</div>
|
||||
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> </div>
|
||||
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& operator*=( int64_t b ) {</div>
|
||||
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a> *= b;</div>
|
||||
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> }</div>
|
||||
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> </div>
|
||||
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a> operator*( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, int64_t b ) {</div>
|
||||
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keywordflow">return</span> {a.quantity * b, a.contract};</div>
|
||||
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> }</div>
|
||||
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> </div>
|
||||
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a> operator*( int64_t a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">return</span> {a * b.quantity, b.contract};</div>
|
||||
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> }</div>
|
||||
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> </div>
|
||||
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keyword">friend</span> int64_t operator/( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordflow">return</span> a.quantity / b.quantity;</div>
|
||||
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> }</div>
|
||||
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
|
||||
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& operator/=( int64_t b ) {</div>
|
||||
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a> /= b;</div>
|
||||
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> }</div>
|
||||
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> </div>
|
||||
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <span class="keyword">friend</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a> operator/( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, int64_t b ) {</div>
|
||||
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keywordflow">return</span> {a.quantity / b, a.contract};</div>
|
||||
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> }</div>
|
||||
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> </div>
|
||||
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> </div>
|
||||
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a3769e5e16987ccf2c510856696f38b9d.html#a3769e5e16987ccf2c510856696f38b9d">operator<</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">return</span> a.quantity < b.quantity;</div>
|
||||
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> }</div>
|
||||
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> </div>
|
||||
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_ab9a725e824a4b42a2a4a23b994289061.html#ab9a725e824a4b42a2a4a23b994289061">operator></a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keywordflow">return</span> a.quantity > b.quantity;</div>
|
||||
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> }</div>
|
||||
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> </div>
|
||||
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a2f1c46cd699cf27d007b60f941edaca0.html#a2f1c46cd699cf27d007b60f941edaca0">operator==</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keywordflow">return</span> std::tie(a.quantity, a.contract) == std::tie(b.quantity, b.contract);</div>
|
||||
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> }</div>
|
||||
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> </div>
|
||||
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a14b4435561885695942e8d60b7d5e7b7.html#a14b4435561885695942e8d60b7d5e7b7">operator!=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="keywordflow">return</span> std::tie(a.quantity, a.contract) != std::tie(b.quantity, b.contract);</div>
|
||||
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> }</div>
|
||||
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> </div>
|
||||
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_a80fdc59744805f578b1947990dc03372.html#a80fdc59744805f578b1947990dc03372">operator<=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keywordflow">return</span> a.quantity <= b.quantity;</div>
|
||||
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> }</div>
|
||||
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
|
||||
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespaceeosio_ab403fc37b2c295133b5be19cfc548c4a.html#ab403fc37b2c295133b5be19cfc548c4a">operator>=</a>( <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& a, <span class="keyword">const</span> <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>& b ) {</div>
|
||||
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a>( a.contract == b.contract, <span class="stringliteral">"type mismatch"</span> );</div>
|
||||
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="keywordflow">return</span> a.quantity >= b.quantity;</div>
|
||||
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> }</div>
|
||||
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> </div>
|
||||
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> </div>
|
||||
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> <a class="code hl_define" href="group__serialize_gac39bf93bca023cc19379279456dac31f.html#gac39bf93bca023cc19379279456dac31f">EOSLIB_SERIALIZE</a>( <a class="code hl_function" href="structeosio_1_1extended__asset_a7747448ddea804e84fe72decd40ee3a2.html#a7747448ddea804e84fe72decd40ee3a2">extended_asset</a>, (<a class="code hl_variable" href="structeosio_1_1extended__asset_aacd83a028c55e22db2e8f14027827ad7.html#aacd83a028c55e22db2e8f14027827ad7">quantity</a>)(<a class="code hl_variable" href="structeosio_1_1extended__asset_acac503620c8c59864b065360fb50868b.html#acac503620c8c59864b065360fb50868b">contract</a>) )</div>
|
||||
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> };</div>
|
||||
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span>}</div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="asset_8hpp.html">asset.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 676 B |
Binary file not shown.
|
After Width: | Height: | Size: 147 B |
@@ -0,0 +1,156 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Файл libraries/eosiolib/core/eosio/binary_extension.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('binary__extension_8hpp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Файл binary_extension.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><code>#include "<a class="el" href="check_8hpp_source.html">check.hpp</a>"</code><br />
|
||||
</div>
|
||||
<p><a href="binary__extension_8hpp_source.html">См. исходные тексты.</a></p>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="binary__extension_8hpp.html">binary_extension.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,339 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Исходный файл libraries/eosiolib/core/eosio/binary_extension.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('binary__extension_8hpp_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">binary_extension.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="binary__extension_8hpp.html">См. документацию.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span> </div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#include "<a class="code" href="check_8hpp.html">check.hpp</a>"</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceeosio.html">eosio</a> {</div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span>binary_extension {</div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">public</span>:</div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">using</span> value_type = T;</div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">constexpr</span> binary_extension() {}</div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">constexpr</span> binary_extension( <span class="keyword">const</span> T& ext )</div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> :_has_value(true)</div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> ::new (&_data) T(ext);</div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> }</div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">constexpr</span> binary_extension( T&& ext )</div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> :_has_value(true)</div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> {</div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> ::new (&_data) T(std::move(ext));</div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> }</div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... Args></div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">constexpr</span> binary_extension( std::in_place_t, Args&&... args )</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> :_has_value(true)</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> {</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> ::new (&_data) T(std::forward<Args>(args)...);</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> }</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">constexpr</span> binary_extension( <span class="keyword">const</span> binary_extension& other )</div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> :_has_value(other._has_value)</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">if</span>( other._has_value ) ::new (&_data) T( *other );</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">constexpr</span> binary_extension( binary_extension&& other )</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> :_has_value(other._has_value)</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> {</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span>( other._has_value ) {</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> ::new (&_data) T( *std::move(other) );</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> other._has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> ~binary_extension() { reset(); }</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">constexpr</span> binary_extension& operator = (<span class="keyword">const</span> binary_extension& other) {</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">if</span> (has_value())</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> reset();</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (other.has_value()) {</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> ::new (&_data) T(*other);</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> _has_value = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> }</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">constexpr</span> binary_extension& operator = (binary_extension&& other) {</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordflow">if</span> (has_value())</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> reset();</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">if</span> (other.has_value()) {</div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> ::new (&_data) T(*other);</div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> _has_value = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> other._has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> }</div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> }</div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <span class="keyword">operator</span> bool()<span class="keyword">const </span>{ <span class="keywordflow">return</span> _has_value; }</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> has_value()<span class="keyword">const </span>{ <span class="keywordflow">return</span> _has_value; }</div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">constexpr</span> T& value()& {</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">if</span> (!_has_value) {</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keyword">false</span>, <span class="stringliteral">"cannot get value of empty binary_extension"</span>);</div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
|
||||
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T& value()const & {</div>
|
||||
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">if</span> (!_has_value) {</div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keyword">false</span>, <span class="stringliteral">"cannot get value of empty binary_extension"</span>);</div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
|
||||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">template</span> <<span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> value_or( U&& def ) -> std::enable_if_t<std::is_convertible<U, T>::value, T&>& {</div>
|
||||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">if</span> (_has_value)</div>
|
||||
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span> def;</div>
|
||||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
|
||||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">constexpr</span> T&& value_or()&& {</div>
|
||||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">if</span> (!_has_value)</div>
|
||||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> std::move(T());</div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> _has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> std::move(_get());</div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T&& value_or()const&& {</div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (!_has_value)</div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">return</span> std::move(T());</div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> _has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">return</span> std::move(_get());</div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> }</div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">constexpr</span> T value_or()& {</div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">if</span> (!_has_value)</div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">return</span> T();</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">constexpr</span> T value_or()const& {</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">if</span> (!_has_value)</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> T();</div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">constexpr</span> T* operator->() {</div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">return</span> &_get();</div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> }</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T* operator->()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> &_get();</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">constexpr</span> T& operator*()& {</div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T& operator*()const& {</div>
|
||||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T&& operator*()const&& {</div>
|
||||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> std::move(_get());</div>
|
||||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
|
||||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">constexpr</span> T&& operator*()&& {</div>
|
||||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">return</span> std::move(_get());</div>
|
||||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> }</div>
|
||||
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
|
||||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">template</span><<span class="keyword">typename</span> ...Args></div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> T& emplace(Args&& ... args)& {</div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span> (_has_value) {</div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> reset();</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> }</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> ::new (&_data) T( std::forward<Args>(args)... );</div>
|
||||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> _has_value = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
|
||||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> _get();</div>
|
||||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
|
||||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
|
||||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">void</span> reset() {</div>
|
||||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">if</span>( _has_value ) {</div>
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> _get().~value_type();</div>
|
||||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> _has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> }</div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
|
||||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">bool</span> _has_value = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">typename</span> std::aligned_storage<<span class="keyword">sizeof</span>(T), <span class="keyword">alignof</span>(T)>::type _data;</div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">constexpr</span> T& _get() {</div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(&_data);</div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> }</div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> T& _get()<span class="keyword">const </span>{</div>
|
||||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(&_data);</div>
|
||||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> }</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> };</div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">template</span><<span class="keyword">typename</span> DataStream, <span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">inline</span> DataStream& <a class="code hl_function" href="namespaceeosio_ac9f0396ed775d5fe67df4b29bc7fc61f.html#ac9f0396ed775d5fe67df4b29bc7fc61f">operator<<</a>(DataStream& ds, <span class="keyword">const</span> eosio::binary_extension<T>& be) {</div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> ds << be.value_or();</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> ds;</div>
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">template</span><<span class="keyword">typename</span> DataStream, <span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">inline</span> DataStream& <a class="code hl_function" href="namespaceeosio_a0071f0e52a33e72d2b0da6fb69fd5a01.html#a0071f0e52a33e72d2b0da6fb69fd5a01">operator>></a>(DataStream& ds, eosio::binary_extension<T>& be) {</div>
|
||||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordflow">if</span>( ds.remaining() ) {</div>
|
||||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> T val;</div>
|
||||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> ds >> val;</div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> be.emplace(val);</div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> }</div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">return</span> ds;</div>
|
||||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> }</div>
|
||||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span>} <span class="comment">// namespace eosio</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="binary__extension_8hpp.html">binary_extension.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,201 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Файл libraries/eosiolib/core/eosio/check.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('check_8hpp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#namespaces">Пространства имен</a> |
|
||||
<a href="#func-members">Функции</a> |
|
||||
<a href="#var-members">Переменные</a> </div>
|
||||
<div class="headertitle"><div class="title">Файл check.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><code>#include <string></code><br />
|
||||
<code>#include <string_view></code><br />
|
||||
</div>
|
||||
<p><a href="check_8hpp_source.html">См. исходные тексты.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Пространства имен</h2></td></tr>
|
||||
<tr class="memitem:namespaceeosio"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio.html">eosio</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespaceeosio_1_1internal__use__do__not__use"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use.html">eosio::internal_use_do_not_use</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Функции</h2></td></tr>
|
||||
<tr class="memitem:a4cf60fb32150ba3e0e63f357f9747387"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">eosio::internal_use_do_not_use::__attribute__</a> ((eosio_wasm_import)) void eosio_assert(uint32_t test</td></tr>
|
||||
<tr class="separator:a4cf60fb32150ba3e0e63f357f9747387"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga54ad844cfe9f99f2c7cfcc935559e633"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">eosio::check</a> (bool pred, std::string_view msg)</td></tr>
|
||||
<tr class="separator:ga54ad844cfe9f99f2c7cfcc935559e633"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga919983993e7c2b18dcb253e3a8ef33e4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_ga919983993e7c2b18dcb253e3a8ef33e4.html#ga919983993e7c2b18dcb253e3a8ef33e4">eosio::check</a> (bool pred, const char *msg)</td></tr>
|
||||
<tr class="separator:ga919983993e7c2b18dcb253e3a8ef33e4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaaa7adb3f6c40df0e974eab5f84e1377b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_gaaa7adb3f6c40df0e974eab5f84e1377b.html#gaaa7adb3f6c40df0e974eab5f84e1377b">eosio::check</a> (bool pred, const std::string &msg)</td></tr>
|
||||
<tr class="separator:gaaa7adb3f6c40df0e974eab5f84e1377b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga61e4624ef8320a0d9918cf247df4df90"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_ga61e4624ef8320a0d9918cf247df4df90.html#ga61e4624ef8320a0d9918cf247df4df90">eosio::check</a> (bool pred, std::string &&msg)</td></tr>
|
||||
<tr class="separator:ga61e4624ef8320a0d9918cf247df4df90"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad245a249b8721374fe09819a00a86906"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_gad245a249b8721374fe09819a00a86906.html#gad245a249b8721374fe09819a00a86906">eosio::check</a> (bool pred, const char *msg, size_t n)</td></tr>
|
||||
<tr class="separator:gad245a249b8721374fe09819a00a86906"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga076f987fe64de4738b5d2f4381150253"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_ga076f987fe64de4738b5d2f4381150253.html#ga076f987fe64de4738b5d2f4381150253">eosio::check</a> (bool pred, const std::string &msg, size_t n)</td></tr>
|
||||
<tr class="separator:ga076f987fe64de4738b5d2f4381150253"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2f6537af230517a619f07727f6ff33a5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__system_ga2f6537af230517a619f07727f6ff33a5.html#ga2f6537af230517a619f07727f6ff33a5">eosio::check</a> (bool pred, uint64_t code)</td></tr>
|
||||
<tr class="separator:ga2f6537af230517a619f07727f6ff33a5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Переменные</h2></td></tr>
|
||||
<tr class="memitem:af2a181710ad035098993649b3dc97a0f"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">eosio::internal_use_do_not_use::msg</a></td></tr>
|
||||
<tr class="separator:af2a181710ad035098993649b3dc97a0f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:add8aff837dc2c0d88fde2e0cc395b869"><td class="memItemLeft" align="right" valign="top">const char uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_add8aff837dc2c0d88fde2e0cc395b869.html#add8aff837dc2c0d88fde2e0cc395b869">eosio::internal_use_do_not_use::msg_len</a></td></tr>
|
||||
<tr class="separator:add8aff837dc2c0d88fde2e0cc395b869"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a810409b760301c0d32156f81dc2da130"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">eosio::internal_use_do_not_use::code</a></td></tr>
|
||||
<tr class="separator:a810409b760301c0d32156f81dc2da130"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Подробное описание</h2>
|
||||
<div class="textblock"><dl class="section copyright"><dt>Авторство</dt><dd>см. eos/LICENSE </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="check_8hpp_source.html">check.hpp</a></p>
|
||||
</div></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="check_8hpp.html">check.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
var check_8hpp =
|
||||
[
|
||||
[ "__attribute__", "check_8hpp.html#a4cf60fb32150ba3e0e63f357f9747387", null ],
|
||||
[ "check", "check_8hpp.html#ga919983993e7c2b18dcb253e3a8ef33e4", null ],
|
||||
[ "check", "check_8hpp.html#gad245a249b8721374fe09819a00a86906", null ],
|
||||
[ "check", "check_8hpp.html#gaaa7adb3f6c40df0e974eab5f84e1377b", null ],
|
||||
[ "check", "check_8hpp.html#ga076f987fe64de4738b5d2f4381150253", null ],
|
||||
[ "check", "check_8hpp.html#ga61e4624ef8320a0d9918cf247df4df90", null ],
|
||||
[ "check", "check_8hpp.html#ga54ad844cfe9f99f2c7cfcc935559e633", null ],
|
||||
[ "check", "check_8hpp.html#ga2f6537af230517a619f07727f6ff33a5", null ],
|
||||
[ "code", "check_8hpp.html#a810409b760301c0d32156f81dc2da130", null ],
|
||||
[ "msg", "check_8hpp.html#af2a181710ad035098993649b3dc97a0f", null ],
|
||||
[ "msg_len", "check_8hpp.html#add8aff837dc2c0d88fde2e0cc395b869", null ]
|
||||
];
|
||||
@@ -0,0 +1,216 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Исходный файл libraries/eosiolib/core/eosio/check.hpp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('check_8hpp_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">check.hpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="check_8hpp.html">См. документацию.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include <string></span></div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include <string_view></span></div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceeosio.html">eosio</a> {</div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use.html"> 12</a></span> <span class="keyword">namespace </span>internal_use_do_not_use {</div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387"> 14</a></span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f"> 15</a></span> void eosio_assert( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> test, const <span class="keywordtype">char</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a> );</div>
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_add8aff837dc2c0d88fde2e0cc395b869.html#add8aff837dc2c0d88fde2e0cc395b869"> 18</a></span> <span class="keywordtype">void</span> eosio_assert_message( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> test, const <span class="keywordtype">char</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_add8aff837dc2c0d88fde2e0cc395b869.html#add8aff837dc2c0d88fde2e0cc395b869">msg_len</a> );</div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <a class="code hl_function" href="namespaceeosio_1_1internal__use__do__not__use_a4cf60fb32150ba3e0e63f357f9747387.html#a4cf60fb32150ba3e0e63f357f9747387">__attribute__</a>((eosio_wasm_import))</div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130"> 21</a></span> <span class="keywordtype">void</span> eosio_assert_code( <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_abc883019693b16f4ff37d33c0d1b61c4.html#abc883019693b16f4ff37d33c0d1b61c4">uint32_t</a> test, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a> );</div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> }</div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> }</div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633"> 42</a></span> inline <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, std::string_view <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>) {</div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">if</span> (!pred)</div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> internal_use_do_not_use::eosio_assert_message(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.data(), <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.size());</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="group__system_ga919983993e7c2b18dcb253e3a8ef33e4.html#ga919983993e7c2b18dcb253e3a8ef33e4"> 57</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>) {</div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> internal_use_do_not_use::eosio_assert(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>);</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="group__system_gaaa7adb3f6c40df0e974eab5f84e1377b.html#gaaa7adb3f6c40df0e974eab5f84e1377b"> 73</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, <span class="keyword">const</span> std::string& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>) {</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> internal_use_do_not_use::eosio_assert_message(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.data(), <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.size());</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="group__system_ga61e4624ef8320a0d9918cf247df4df90.html#ga61e4624ef8320a0d9918cf247df4df90"> 89</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, std::string&& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>) {</div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> internal_use_do_not_use::eosio_assert_message(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.data(), <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.size());</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="group__system_gad245a249b8721374fe09819a00a86906.html#gad245a249b8721374fe09819a00a86906"> 107</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <span class="keywordtype">size_t</span> n) {</div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> internal_use_do_not_use::eosio_assert_message(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, n);</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</div>
|
||||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
|
||||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="group__system_ga076f987fe64de4738b5d2f4381150253.html#ga076f987fe64de4738b5d2f4381150253"> 124</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, <span class="keyword">const</span> std::string& <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>, <span class="keywordtype">size_t</span> n) {</div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> internal_use_do_not_use::eosio_assert_message(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_af2a181710ad035098993649b3dc97a0f.html#af2a181710ad035098993649b3dc97a0f">msg</a>.data(), n);</div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> }</div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> }</div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="group__system_ga2f6537af230517a619f07727f6ff33a5.html#ga2f6537af230517a619f07727f6ff33a5"> 140</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__system_ga54ad844cfe9f99f2c7cfcc935559e633.html#ga54ad844cfe9f99f2c7cfcc935559e633">check</a>(<span class="keywordtype">bool</span> pred, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a02d21b61eb2a51a93d9af3e0a2a0989a.html#a02d21b61eb2a51a93d9af3e0a2a0989a">uint64_t</a> <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>) {</div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">if</span> (!pred) {</div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> internal_use_do_not_use::eosio_assert_code(<span class="keyword">false</span>, <a class="code hl_variable" href="namespaceeosio_1_1internal__use__do__not__use_a810409b760301c0d32156f81dc2da130.html#a810409b760301c0d32156f81dc2da130">code</a>);</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>} <span class="comment">// namespace eosio</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li><li class="navelem"><a class="el" href="dir_9e60c71e6dfb8d92b39aded6f4ab9fa8.html">eosiolib</a></li><li class="navelem"><a class="el" href="dir_850c7dbae88cf75e5ded2d8d64345058.html">core</a></li><li class="navelem"><a class="el" href="dir_6973a5be5f0104fdfb8b76a272d58cb0.html">eosio</a></li><li class="navelem"><a class="el" href="check_8hpp.html">check.hpp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Cписок членов класса</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">eosio::block_timestamp Cписок членов класса</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Полный список членов класса <a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a>, включая наследуемые из базового класса</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_aa719feec777894d3612305fcdf579d1e.html#aa719feec777894d3612305fcdf579d1e">block_timestamp</a>(uint32_t s=0)</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_a72934b4290a476785f852983608263b0.html#a72934b4290a476785f852983608263b0">block_timestamp</a>(const time_point &t)</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_aae1af00ad48d215fbd72d3e2339655bf.html#aae1af00ad48d215fbd72d3e2339655bf">block_timestamp</a>(const time_point_sec &t)</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_abd89e2d752bce18f94f865426a16c5bf.html#abd89e2d752bce18f94f865426a16c5bf">from_iso_string</a>(const std::string &date_str)</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_a30ae0cff751d3f0ff01010f4a4f6d052.html#a30ae0cff751d3f0ff01010f4a4f6d052">maximum</a>()</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_a97cc3a05e64223e6144fde0ccfac1abd.html#a97cc3a05e64223e6144fde0ccfac1abd">min</a>()</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_a07825f36097aa846aecaa221239874d6.html#a07825f36097aa846aecaa221239874d6">next</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_abc0874625ff948fb8f23dd41644aee23.html#abc0874625ff948fb8f23dd41644aee23">operator time_point</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_a0bb7b80144520847d11ee3d3a4b81bae.html#a0bb7b80144520847d11ee3d3a4b81bae">to_string</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1block__timestamp_ac645cbc95a573b9ddc33439bf7953e83.html#ac645cbc95a573b9ddc33439bf7953e83">to_time_point</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1block__timestamp.html">eosio::block_timestamp</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,193 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Класс eosio::block_timestamp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Открытые члены</a> |
|
||||
<a href="#pub-static-methods">Открытые статические члены</a> |
|
||||
<a href="classeosio_1_1block__timestamp-members.html">Полный список членов класса</a> </div>
|
||||
<div class="headertitle"><div class="title">Класс eosio::block_timestamp<div class="ingroups"><a class="el" href="group__core.html">API ядра</a> » <a class="el" href="group__time.html">Время</a></div></div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="time_8hpp_source.html">time.hpp</a>></code></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Открытые члены</h2></td></tr>
|
||||
<tr class="memitem:aa719feec777894d3612305fcdf579d1e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_aa719feec777894d3612305fcdf579d1e.html#aa719feec777894d3612305fcdf579d1e">block_timestamp</a> (uint32_t s=0)</td></tr>
|
||||
<tr class="separator:aa719feec777894d3612305fcdf579d1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a72934b4290a476785f852983608263b0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_a72934b4290a476785f852983608263b0.html#a72934b4290a476785f852983608263b0">block_timestamp</a> (const <a class="el" href="classeosio_1_1time__point.html">time_point</a> &t)</td></tr>
|
||||
<tr class="separator:a72934b4290a476785f852983608263b0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aae1af00ad48d215fbd72d3e2339655bf"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_aae1af00ad48d215fbd72d3e2339655bf.html#aae1af00ad48d215fbd72d3e2339655bf">block_timestamp</a> (const <a class="el" href="classeosio_1_1time__point__sec.html">time_point_sec</a> &t)</td></tr>
|
||||
<tr class="separator:aae1af00ad48d215fbd72d3e2339655bf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a07825f36097aa846aecaa221239874d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_a07825f36097aa846aecaa221239874d6.html#a07825f36097aa846aecaa221239874d6">next</a> () const</td></tr>
|
||||
<tr class="separator:a07825f36097aa846aecaa221239874d6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac645cbc95a573b9ddc33439bf7953e83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classeosio_1_1time__point.html">time_point</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_ac645cbc95a573b9ddc33439bf7953e83.html#ac645cbc95a573b9ddc33439bf7953e83">to_time_point</a> () const</td></tr>
|
||||
<tr class="separator:ac645cbc95a573b9ddc33439bf7953e83"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abc0874625ff948fb8f23dd41644aee23"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_abc0874625ff948fb8f23dd41644aee23.html#abc0874625ff948fb8f23dd41644aee23">operator time_point</a> () const</td></tr>
|
||||
<tr class="separator:abc0874625ff948fb8f23dd41644aee23"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0bb7b80144520847d11ee3d3a4b81bae"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_a0bb7b80144520847d11ee3d3a4b81bae.html#a0bb7b80144520847d11ee3d3a4b81bae">to_string</a> () const</td></tr>
|
||||
<tr class="separator:a0bb7b80144520847d11ee3d3a4b81bae"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
|
||||
Открытые статические члены</h2></td></tr>
|
||||
<tr class="memitem:a30ae0cff751d3f0ff01010f4a4f6d052"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_a30ae0cff751d3f0ff01010f4a4f6d052.html#a30ae0cff751d3f0ff01010f4a4f6d052">maximum</a> ()</td></tr>
|
||||
<tr class="separator:a30ae0cff751d3f0ff01010f4a4f6d052"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a97cc3a05e64223e6144fde0ccfac1abd"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_a97cc3a05e64223e6144fde0ccfac1abd.html#a97cc3a05e64223e6144fde0ccfac1abd">min</a> ()</td></tr>
|
||||
<tr class="separator:a97cc3a05e64223e6144fde0ccfac1abd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abd89e2d752bce18f94f865426a16c5bf"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1block__timestamp_abd89e2d752bce18f94f865426a16c5bf.html#abd89e2d752bce18f94f865426a16c5bf">from_iso_string</a> (const std::string &date_str)</td></tr>
|
||||
<tr class="separator:abd89e2d752bce18f94f865426a16c5bf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Подробное описание</h2>
|
||||
<div class="textblock"><p >Время блока в заголовках блоков сети COOPOS: номер слота с шагом block_interval_ms от эпохи block_timestamp_epoch (миллисекунды). </p>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00171">171</a></p>
|
||||
</div><hr/>Объявления и описания членов класса находятся в файле:<ul>
|
||||
<li>libraries/eosiolib/core/eosio/<a class="el" href="time_8hpp_source.html">time.hpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
var classeosio_1_1block__timestamp =
|
||||
[
|
||||
[ "block_timestamp", "classeosio_1_1block__timestamp_aa719feec777894d3612305fcdf579d1e.html#aa719feec777894d3612305fcdf579d1e", null ],
|
||||
[ "block_timestamp", "classeosio_1_1block__timestamp_a72934b4290a476785f852983608263b0.html#a72934b4290a476785f852983608263b0", null ],
|
||||
[ "block_timestamp", "classeosio_1_1block__timestamp_aae1af00ad48d215fbd72d3e2339655bf.html#aae1af00ad48d215fbd72d3e2339655bf", null ],
|
||||
[ "next", "classeosio_1_1block__timestamp_a07825f36097aa846aecaa221239874d6.html#a07825f36097aa846aecaa221239874d6", null ],
|
||||
[ "operator time_point", "classeosio_1_1block__timestamp_abc0874625ff948fb8f23dd41644aee23.html#abc0874625ff948fb8f23dd41644aee23", null ],
|
||||
[ "to_string", "classeosio_1_1block__timestamp_a0bb7b80144520847d11ee3d3a4b81bae.html#a0bb7b80144520847d11ee3d3a4b81bae", null ],
|
||||
[ "to_time_point", "classeosio_1_1block__timestamp_ac645cbc95a573b9ddc33439bf7953e83.html#ac645cbc95a573b9ddc33439bf7953e83", null ]
|
||||
];
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::next</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_a07825f36097aa846aecaa221239874d6.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a07825f36097aa846aecaa221239874d6" name="a07825f36097aa846aecaa221239874d6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a07825f36097aa846aecaa221239874d6">◆ </a></span>next()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> eosio::block_timestamp::next </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00186">186</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::to_string</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_a0bb7b80144520847d11ee3d3a4b81bae.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a0bb7b80144520847d11ee3d3a4b81bae" name="a0bb7b80144520847d11ee3d3a4b81bae"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bb7b80144520847d11ee3d3a4b81bae">◆ </a></span>to_string()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">std::string eosio::block_timestamp::to_string </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00208">208</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::maximum</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_a30ae0cff751d3f0ff01010f4a4f6d052.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a30ae0cff751d3f0ff01010f4a4f6d052" name="a30ae0cff751d3f0ff01010f4a4f6d052"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a30ae0cff751d3f0ff01010f4a4f6d052">◆ </a></span>maximum()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> eosio::block_timestamp::maximum </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00183">183</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::block_timestamp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_a72934b4290a476785f852983608263b0.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a72934b4290a476785f852983608263b0" name="a72934b4290a476785f852983608263b0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a72934b4290a476785f852983608263b0">◆ </a></span>block_timestamp() <span class="overload">[2/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">eosio::block_timestamp::block_timestamp </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="classeosio_1_1time__point.html">time_point</a> & </td>
|
||||
<td class="paramname"><em>t</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00175">175</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::min</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_a97cc3a05e64223e6144fde0ccfac1abd.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a97cc3a05e64223e6144fde0ccfac1abd" name="a97cc3a05e64223e6144fde0ccfac1abd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a97cc3a05e64223e6144fde0ccfac1abd">◆ </a></span>min()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> eosio::block_timestamp::min </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00184">184</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::block_timestamp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_aa719feec777894d3612305fcdf579d1e.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="aa719feec777894d3612305fcdf579d1e" name="aa719feec777894d3612305fcdf579d1e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa719feec777894d3612305fcdf579d1e">◆ </a></span>block_timestamp() <span class="overload">[1/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">eosio::block_timestamp::block_timestamp </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">uint32_t </td>
|
||||
<td class="paramname"><em>s</em> = <code>0</code></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00173">173</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::block_timestamp</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_aae1af00ad48d215fbd72d3e2339655bf.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="aae1af00ad48d215fbd72d3e2339655bf" name="aae1af00ad48d215fbd72d3e2339655bf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aae1af00ad48d215fbd72d3e2339655bf">◆ </a></span>block_timestamp() <span class="overload">[3/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">eosio::block_timestamp::block_timestamp </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="classeosio_1_1time__point__sec.html">time_point_sec</a> & </td>
|
||||
<td class="paramname"><em>t</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00179">179</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::operator time_point</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_abc0874625ff948fb8f23dd41644aee23.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="abc0874625ff948fb8f23dd41644aee23" name="abc0874625ff948fb8f23dd41644aee23"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abc0874625ff948fb8f23dd41644aee23">◆ </a></span>operator time_point()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">eosio::block_timestamp::operator <a class="el" href="classeosio_1_1time__point.html">time_point</a> </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00197">197</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::from_iso_string</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_abd89e2d752bce18f94f865426a16c5bf.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="abd89e2d752bce18f94f865426a16c5bf" name="abd89e2d752bce18f94f865426a16c5bf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abd89e2d752bce18f94f865426a16c5bf">◆ </a></span>from_iso_string()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a> eosio::block_timestamp::from_iso_string </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>date_str</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00203">203</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::block_timestamp::to_time_point</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1block__timestamp_ac645cbc95a573b9ddc33439bf7953e83.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="ac645cbc95a573b9ddc33439bf7953e83" name="ac645cbc95a573b9ddc33439bf7953e83"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac645cbc95a573b9ddc33439bf7953e83">◆ </a></span>to_time_point()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="classeosio_1_1time__point.html">time_point</a> eosio::block_timestamp::to_time_point </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="time_8hpp_source.html">time.hpp</a> строка <a class="el" href="time_8hpp_source.html#l00193">193</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1block__timestamp.html">block_timestamp</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,164 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Cписок членов класса</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">eosio::contract Cписок членов класса</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Полный список членов класса <a class="el" href="classeosio_1_1contract.html">eosio::contract</a>, включая наследуемые из базового класса</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1contract_a66b526b89bc6d35b63b874615f1d27b8.html#a66b526b89bc6d35b63b874615f1d27b8">_ds</a></td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1contract_a98397119d8b0cf44f22a62967f8d030a.html#a98397119d8b0cf44f22a62967f8d030a">_first_receiver</a></td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1contract_a29c0c98c72ab578a5965d13b00dca0c0.html#a29c0c98c72ab578a5965d13b00dca0c0">_self</a></td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1contract_acb803b9d14bdc26811cdaaf98804e105.html#acb803b9d14bdc26811cdaaf98804e105">contract</a>(name self, name first_receiver, datastream< const char * > ds)</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1contract_a4efcd5638d26dad3e5dc075bad152d45.html#a4efcd5638d26dad3e5dc075bad152d45">get_code</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1contract_a025bbcfc537a64a72c6b41f1118559a0.html#a025bbcfc537a64a72c6b41f1118559a0">get_datastream</a>()</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1contract_ab2b6af0978586ae4e3a1c9c1699e660a.html#ab2b6af0978586ae4e3a1c9c1699e660a">get_datastream</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classeosio_1_1contract_ac7c14f66e3d41904264d1c6558cf370b.html#ac7c14f66e3d41904264d1c6558cf370b">get_first_receiver</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classeosio_1_1contract_a7564cad9be4ee5dcaac832511d9a0e05.html#a7564cad9be4ee5dcaac832511d9a0e05">get_self</a>() const</td><td class="entry"><a class="el" href="classeosio_1_1contract.html">eosio::contract</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,192 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: Класс eosio::contract</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Открытые члены</a> |
|
||||
<a href="#pro-attribs">Защищенные данные</a> |
|
||||
<a href="classeosio_1_1contract-members.html">Полный список членов класса</a> </div>
|
||||
<div class="headertitle"><div class="title">Класс eosio::contract<div class="ingroups"><a class="el" href="group__contracts.html">API контрактов</a> | <a class="el" href="group__types.html">Типы</a> » <a class="el" href="group__contract.html">Контракт (Contract)</a></div></div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="contract_8hpp_source.html">contract.hpp</a>></code></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Открытые члены</h2></td></tr>
|
||||
<tr class="memitem:acb803b9d14bdc26811cdaaf98804e105"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_acb803b9d14bdc26811cdaaf98804e105.html#acb803b9d14bdc26811cdaaf98804e105">contract</a> (<a class="el" href="structeosio_1_1name.html">name</a> self, <a class="el" href="structeosio_1_1name.html">name</a> first_receiver, <a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > ds)</td></tr>
|
||||
<tr class="separator:acb803b9d14bdc26811cdaaf98804e105"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7564cad9be4ee5dcaac832511d9a0e05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structeosio_1_1name.html">name</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a7564cad9be4ee5dcaac832511d9a0e05.html#a7564cad9be4ee5dcaac832511d9a0e05">get_self</a> () const</td></tr>
|
||||
<tr class="separator:a7564cad9be4ee5dcaac832511d9a0e05"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4efcd5638d26dad3e5dc075bad152d45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structeosio_1_1name.html">name</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a4efcd5638d26dad3e5dc075bad152d45.html#a4efcd5638d26dad3e5dc075bad152d45">get_code</a> () const</td></tr>
|
||||
<tr class="separator:a4efcd5638d26dad3e5dc075bad152d45"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac7c14f66e3d41904264d1c6558cf370b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structeosio_1_1name.html">name</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_ac7c14f66e3d41904264d1c6558cf370b.html#ac7c14f66e3d41904264d1c6558cf370b">get_first_receiver</a> () const</td></tr>
|
||||
<tr class="separator:ac7c14f66e3d41904264d1c6558cf370b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a025bbcfc537a64a72c6b41f1118559a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a025bbcfc537a64a72c6b41f1118559a0.html#a025bbcfc537a64a72c6b41f1118559a0">get_datastream</a> ()</td></tr>
|
||||
<tr class="separator:a025bbcfc537a64a72c6b41f1118559a0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab2b6af0978586ae4e3a1c9c1699e660a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_ab2b6af0978586ae4e3a1c9c1699e660a.html#ab2b6af0978586ae4e3a1c9c1699e660a">get_datastream</a> () const</td></tr>
|
||||
<tr class="separator:ab2b6af0978586ae4e3a1c9c1699e660a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
|
||||
Защищенные данные</h2></td></tr>
|
||||
<tr class="memitem:a29c0c98c72ab578a5965d13b00dca0c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structeosio_1_1name.html">name</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a29c0c98c72ab578a5965d13b00dca0c0.html#a29c0c98c72ab578a5965d13b00dca0c0">_self</a></td></tr>
|
||||
<tr class="separator:a29c0c98c72ab578a5965d13b00dca0c0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a98397119d8b0cf44f22a62967f8d030a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structeosio_1_1name.html">name</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a98397119d8b0cf44f22a62967f8d030a.html#a98397119d8b0cf44f22a62967f8d030a">_first_receiver</a></td></tr>
|
||||
<tr class="separator:a98397119d8b0cf44f22a62967f8d030a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a66b526b89bc6d35b63b874615f1d27b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classeosio_1_1contract_a66b526b89bc6d35b63b874615f1d27b8.html#a66b526b89bc6d35b63b874615f1d27b8">_ds</a> = <a class="el" href="classeosio_1_1datastream.html">datastream</a><const char*>(nullptr, 0)</td></tr>
|
||||
<tr class="separator:a66b526b89bc6d35b63b874615f1d27b8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Подробное описание</h2>
|
||||
<div class="textblock"><p >Базовый класс контракта COOPOS.</p>
|
||||
<p >Новый контракт должен наследовать этот класс, чтобы можно было использовать макрос EOSIO_ABI. </p>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00030">30</a></p>
|
||||
</div><hr/>Объявления и описания членов класса находятся в файле:<ul>
|
||||
<li>libraries/eosiolib/contracts/eosio/<a class="el" href="contract_8hpp_source.html">contract.hpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
var classeosio_1_1contract =
|
||||
[
|
||||
[ "contract", "classeosio_1_1contract_acb803b9d14bdc26811cdaaf98804e105.html#acb803b9d14bdc26811cdaaf98804e105", null ],
|
||||
[ "get_code", "classeosio_1_1contract_a4efcd5638d26dad3e5dc075bad152d45.html#a4efcd5638d26dad3e5dc075bad152d45", null ],
|
||||
[ "get_datastream", "classeosio_1_1contract_a025bbcfc537a64a72c6b41f1118559a0.html#a025bbcfc537a64a72c6b41f1118559a0", null ],
|
||||
[ "get_datastream", "classeosio_1_1contract_ab2b6af0978586ae4e3a1c9c1699e660a.html#ab2b6af0978586ae4e3a1c9c1699e660a", null ],
|
||||
[ "get_first_receiver", "classeosio_1_1contract_ac7c14f66e3d41904264d1c6558cf370b.html#ac7c14f66e3d41904264d1c6558cf370b", null ],
|
||||
[ "get_self", "classeosio_1_1contract_a7564cad9be4ee5dcaac832511d9a0e05.html#a7564cad9be4ee5dcaac832511d9a0e05", null ],
|
||||
[ "_ds", "classeosio_1_1contract_a66b526b89bc6d35b63b874615f1d27b8.html#a66b526b89bc6d35b63b874615f1d27b8", null ],
|
||||
[ "_first_receiver", "classeosio_1_1contract_a98397119d8b0cf44f22a62967f8d030a.html#a98397119d8b0cf44f22a62967f8d030a", null ],
|
||||
[ "_self", "classeosio_1_1contract_a29c0c98c72ab578a5965d13b00dca0c0.html#a29c0c98c72ab578a5965d13b00dca0c0", null ]
|
||||
];
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::get_datastream</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a025bbcfc537a64a72c6b41f1118559a0.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a025bbcfc537a64a72c6b41f1118559a0" name="a025bbcfc537a64a72c6b41f1118559a0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a025bbcfc537a64a72c6b41f1118559a0">◆ </a></span>get_datastream() <span class="overload">[1/2]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > & eosio::contract::get_datastream </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Поток данных (datastream) этого контракта</p>
|
||||
<dl class="section return"><dt>Возвращает</dt><dd><a class="el" href="classeosio_1_1datastream.html">datastream<const char*></a> — поток данных контракта </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00069">69</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::_self</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a29c0c98c72ab578a5965d13b00dca0c0.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a29c0c98c72ab578a5965d13b00dca0c0" name="a29c0c98c72ab578a5965d13b00dca0c0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a29c0c98c72ab578a5965d13b00dca0c0">◆ </a></span>_self</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structeosio_1_1name.html">name</a> eosio::contract::_self</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Имя аккаунта, на котором развёрнут контракт. </p>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00082">82</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::get_code</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a4efcd5638d26dad3e5dc075bad152d45.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a4efcd5638d26dad3e5dc075bad152d45" name="a4efcd5638d26dad3e5dc075bad152d45"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4efcd5638d26dad3e5dc075bad152d45">◆ </a></span>get_code()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structeosio_1_1name.html">name</a> eosio::contract::get_code </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Имя first_receiver для обрабатываемого действия (устаревший метод).</p>
|
||||
<dl class="section return"><dt>Возвращает</dt><dd>name — первый получатель текущего действия (параметр конструктора <code>first_receiver</code>) </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00055">55</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::_ds</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a66b526b89bc6d35b63b874615f1d27b8.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a66b526b89bc6d35b63b874615f1d27b8" name="a66b526b89bc6d35b63b874615f1d27b8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a66b526b89bc6d35b63b874615f1d27b8">◆ </a></span>_ds</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="classeosio_1_1datastream.html">datastream</a><const char*> eosio::contract::_ds = <a class="el" href="classeosio_1_1datastream.html">datastream</a><const char*>(nullptr, 0)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Поток данных (datastream) контракта </p>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00092">92</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::get_self</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a7564cad9be4ee5dcaac832511d9a0e05.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a7564cad9be4ee5dcaac832511d9a0e05" name="a7564cad9be4ee5dcaac832511d9a0e05"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7564cad9be4ee5dcaac832511d9a0e05">◆ </a></span>get_self()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structeosio_1_1name.html">name</a> eosio::contract::get_self </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Имя этого контракта</p>
|
||||
<dl class="section return"><dt>Возвращает</dt><dd>name — имя контракта </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00047">47</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::_first_receiver</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_a98397119d8b0cf44f22a62967f8d030a.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="a98397119d8b0cf44f22a62967f8d030a" name="a98397119d8b0cf44f22a62967f8d030a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a98397119d8b0cf44f22a62967f8d030a">◆ </a></span>_first_receiver</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structeosio_1_1name.html">name</a> eosio::contract::_first_receiver</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Аккаунт, на который входящее действие впервые поступило. </p>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00087">87</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::get_datastream</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_ab2b6af0978586ae4e3a1c9c1699e660a.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="ab2b6af0978586ae4e3a1c9c1699e660a" name="ab2b6af0978586ae4e3a1c9c1699e660a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab2b6af0978586ae4e3a1c9c1699e660a">◆ </a></span>get_datastream() <span class="overload">[2/2]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const <a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > & eosio::contract::get_datastream </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Поток данных (datastream) этого контракта (константная версия)</p>
|
||||
<dl class="section return"><dt>Возвращает</dt><dd><a class="el" href="classeosio_1_1datastream.html">datastream<const char*></a> — поток данных контракта </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00076">76</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::get_first_receiver</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_ac7c14f66e3d41904264d1c6558cf370b.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="ac7c14f66e3d41904264d1c6558cf370b" name="ac7c14f66e3d41904264d1c6558cf370b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac7c14f66e3d41904264d1c6558cf370b">◆ </a></span>get_first_receiver()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structeosio_1_1name.html">name</a> eosio::contract::get_first_receiver </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Аккаунт, на который входящее действие впервые поступило.</p>
|
||||
<dl class="section return"><dt>Возвращает</dt><dd>name — первый получатель текущего действия (параметр конструктора <code>first_receiver</code>) </dd></dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00062">62</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,203 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!-- BEGIN opengraph metadata -->
|
||||
<meta property="og:title" content="CDT / eosiolib" />
|
||||
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta property="og:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
|
||||
<!-- END opengraph metadata -->
|
||||
<!-- BEGIN twitter metadata -->
|
||||
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
|
||||
<meta name="twitter:title" content="CDT / eosiolib" />
|
||||
<meta name="twitter:description" content="Документация библиотек Contract Development Toolkit (eosiolib)" />
|
||||
<!-- END twitter metadata -->
|
||||
<title>CDT: eosio::contract::contract</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript" src="mermaid.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
try {
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a href="https://github.com/AntelopeIO/cdt" class="github-corner" title="Исходники CDT на GitHub">
|
||||
<svg viewBox="0 0 250 250" style="position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">CDT
|
||||
 <span id="projectnumber">v4.2.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">инструменты разработчика</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Создано системой Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Поиск','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Поиск');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classeosio_1_1contract_acb803b9d14bdc26811cdaaf98804e105.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<a id="acb803b9d14bdc26811cdaaf98804e105" name="acb803b9d14bdc26811cdaaf98804e105"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acb803b9d14bdc26811cdaaf98804e105">◆ </a></span>contract()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">eosio::contract::contract </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="structeosio_1_1name.html">name</a> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structeosio_1_1name.html">name</a> </td>
|
||||
<td class="paramname"><em>first_receiver</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classeosio_1_1datastream.html">datastream</a>< const char * > </td>
|
||||
<td class="paramname"><em>ds</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Создаёт контракт с заданными параметрами</p>
|
||||
<dl class="params"><dt>Аргументы</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">self</td><td>— имя аккаунта, на котором развёрнут контракт </td></tr>
|
||||
<tr><td class="paramname">first_receiver</td><td>— аккаунт, на который действие впервые поступило </td></tr>
|
||||
<tr><td class="paramname">ds</td><td>— используемый поток данных (datastream) </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">См. определение в файле <a class="el" href="contract_8hpp_source.html">contract.hpp</a> строка <a class="el" href="contract_8hpp_source.html#l00039">39</a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- HTML footer for doxygen 1.9.1-->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceeosio.html">eosio</a></li><li class="navelem"><a class="el" href="classeosio_1_1contract.html">contract</a></li>
|
||||
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
|
||||
toggleButton.title = "Toggle Light/Dark Mode"
|
||||
$(document).ready(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
$(window).resize(function(){
|
||||
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user