mirror of
https://github.com/XRPLF/rippled.git
synced 2026-02-13 18:32:34 +00:00
Compare commits
4 Commits
ximinez/ac
...
a1q123456/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b433b6878 | ||
|
|
4796ed57a4 | ||
|
|
73e5323859 | ||
|
|
3d6c575f5c |
6
.github/scripts/levelization/README.md
vendored
6
.github/scripts/levelization/README.md
vendored
@@ -70,7 +70,7 @@ that `test` code should _never_ be included in `xrpl` or `xrpld` code.)
|
|||||||
|
|
||||||
## Validation
|
## Validation
|
||||||
|
|
||||||
The [levelization](generate.sh) script takes no parameters,
|
The [levelization](generate.py) script takes no parameters,
|
||||||
reads no environment variables, and can be run from any directory,
|
reads no environment variables, and can be run from any directory,
|
||||||
as long as it is in the expected location in the rippled repo.
|
as long as it is in the expected location in the rippled repo.
|
||||||
It can be run at any time from within a checked out repo, and will
|
It can be run at any time from within a checked out repo, and will
|
||||||
@@ -104,7 +104,7 @@ It generates many files of [results](results):
|
|||||||
Github Actions workflow to test that levelization loops haven't
|
Github Actions workflow to test that levelization loops haven't
|
||||||
changed. Unfortunately, if changes are detected, it can't tell if
|
changed. Unfortunately, if changes are detected, it can't tell if
|
||||||
they are improvements or not, so if you have resolved any issues or
|
they are improvements or not, so if you have resolved any issues or
|
||||||
done anything else to improve levelization, run `levelization.sh`,
|
done anything else to improve levelization, run `generate.py`,
|
||||||
and commit the updated results.
|
and commit the updated results.
|
||||||
|
|
||||||
The `loops.txt` and `ordering.txt` files relate the modules
|
The `loops.txt` and `ordering.txt` files relate the modules
|
||||||
@@ -128,7 +128,7 @@ The committed files hide the detailed values intentionally, to
|
|||||||
prevent false alarms and merging issues, and because it's easy to
|
prevent false alarms and merging issues, and because it's easy to
|
||||||
get those details locally.
|
get those details locally.
|
||||||
|
|
||||||
1. Run `levelization.sh`
|
1. Run `generate.py`
|
||||||
2. Grep the modules in `paths.txt`.
|
2. Grep the modules in `paths.txt`.
|
||||||
- For example, if a cycle is found `A ~= B`, simply `grep -w
|
- For example, if a cycle is found `A ~= B`, simply `grep -w
|
||||||
A .github/scripts/levelization/results/paths.txt | grep -w B`
|
A .github/scripts/levelization/results/paths.txt | grep -w B`
|
||||||
|
|||||||
369
.github/scripts/levelization/generate.py
vendored
Normal file
369
.github/scripts/levelization/generate.py
vendored
Normal file
@@ -0,0 +1,369 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: generate.py
|
||||||
|
This script takes no parameters, and can be run from any directory,
|
||||||
|
as long as it is in the expected.
|
||||||
|
location in the repo.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from collections import defaultdict
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Dict, List, Tuple, Set, Optional
|
||||||
|
|
||||||
|
|
||||||
|
# Compile regex patterns once at module level
|
||||||
|
INCLUDE_PATTERN = re.compile(r"^\s*#include.*/.*\.h")
|
||||||
|
INCLUDE_PATH_PATTERN = re.compile(r'[<"]([^>"]+)[>"]')
|
||||||
|
|
||||||
|
|
||||||
|
def dictionary_sort_key(s: str) -> str:
|
||||||
|
"""
|
||||||
|
Create a sort key that mimics 'sort -d' (dictionary order).
|
||||||
|
Dictionary order only considers blanks and alphanumeric characters.
|
||||||
|
This means punctuation like '.' is ignored during sorting.
|
||||||
|
"""
|
||||||
|
# Keep only alphanumeric characters and spaces
|
||||||
|
return "".join(c for c in s if c.isalnum() or c.isspace())
|
||||||
|
|
||||||
|
|
||||||
|
def get_level(file_path: str) -> str:
|
||||||
|
"""
|
||||||
|
Extract the level from a file path (second and third directory components).
|
||||||
|
Equivalent to bash: cut -d/ -f 2,3
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
src/xrpld/app/main.cpp -> xrpld.app
|
||||||
|
src/libxrpl/protocol/STObject.cpp -> libxrpl.protocol
|
||||||
|
include/xrpl/basics/base_uint.h -> xrpl.basics
|
||||||
|
"""
|
||||||
|
parts = file_path.split("/")
|
||||||
|
|
||||||
|
# Get fields 2 and 3 (indices 1 and 2 in 0-based indexing)
|
||||||
|
if len(parts) >= 3:
|
||||||
|
level = f"{parts[1]}/{parts[2]}"
|
||||||
|
elif len(parts) >= 2:
|
||||||
|
level = f"{parts[1]}/toplevel"
|
||||||
|
else:
|
||||||
|
level = file_path
|
||||||
|
|
||||||
|
# If the "level" indicates a file, cut off the filename
|
||||||
|
if "." in level.split("/")[-1]: # Avoid Path object creation
|
||||||
|
# Use the "toplevel" label as a workaround for `sort`
|
||||||
|
# inconsistencies between different utility versions
|
||||||
|
level = level.rsplit("/", 1)[0] + "/toplevel"
|
||||||
|
|
||||||
|
return level.replace("/", ".")
|
||||||
|
|
||||||
|
|
||||||
|
def extract_include_level(include_line: str) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Extract the include path from an #include directive.
|
||||||
|
Gets the first two directory components from the include path.
|
||||||
|
Equivalent to bash: cut -d/ -f 1,2
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
#include <xrpl/basics/base_uint.h> -> xrpl.basics
|
||||||
|
#include "xrpld/app/main/Application.h" -> xrpld.app
|
||||||
|
"""
|
||||||
|
# Remove everything before the quote or angle bracket
|
||||||
|
match = INCLUDE_PATH_PATTERN.search(include_line)
|
||||||
|
if not match:
|
||||||
|
return None
|
||||||
|
|
||||||
|
include_path = match.group(1)
|
||||||
|
parts = include_path.split("/")
|
||||||
|
|
||||||
|
# Get first two fields (indices 0 and 1)
|
||||||
|
if len(parts) >= 2:
|
||||||
|
include_level = f"{parts[0]}/{parts[1]}"
|
||||||
|
else:
|
||||||
|
include_level = include_path
|
||||||
|
|
||||||
|
# If the "includelevel" indicates a file, cut off the filename
|
||||||
|
if "." in include_level.split("/")[-1]: # Avoid Path object creation
|
||||||
|
include_level = include_level.rsplit("/", 1)[0] + "/toplevel"
|
||||||
|
|
||||||
|
return include_level.replace("/", ".")
|
||||||
|
|
||||||
|
|
||||||
|
def find_repo_root(start_path: Path, depth_limit: int = 10) -> Path:
|
||||||
|
"""
|
||||||
|
Find the repository root by looking for .git directory or src/include folders.
|
||||||
|
Walks up the directory tree from the start path.
|
||||||
|
"""
|
||||||
|
current = start_path.resolve()
|
||||||
|
|
||||||
|
# Walk up the directory tree
|
||||||
|
for _ in range(depth_limit): # Limit search depth to prevent infinite loops
|
||||||
|
# Check if this directory has src or include folders
|
||||||
|
has_src = (current / "src").exists()
|
||||||
|
has_include = (current / "include").exists()
|
||||||
|
|
||||||
|
if has_src or has_include:
|
||||||
|
return current
|
||||||
|
|
||||||
|
# Check if this is a git repository root
|
||||||
|
if (current / ".git").exists():
|
||||||
|
# Check if it has src or include nearby
|
||||||
|
if has_src or has_include:
|
||||||
|
return current
|
||||||
|
|
||||||
|
# Move up one level
|
||||||
|
parent = current.parent
|
||||||
|
if parent == current: # Reached filesystem root
|
||||||
|
break
|
||||||
|
current = parent
|
||||||
|
|
||||||
|
# If we couldn't find it, raise an error
|
||||||
|
raise RuntimeError(
|
||||||
|
"Could not find repository root. "
|
||||||
|
"Expected to find a directory containing 'src' and/or 'include' folders."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_scan_directories(repo_root: Path) -> List[Path]:
|
||||||
|
"""
|
||||||
|
Get the list of directories to scan for include files.
|
||||||
|
Returns paths that actually exist.
|
||||||
|
"""
|
||||||
|
directories = []
|
||||||
|
|
||||||
|
for dir_name in ["include", "src"]:
|
||||||
|
dir_path = repo_root / dir_name
|
||||||
|
if dir_path.exists() and dir_path.is_dir():
|
||||||
|
directories.append(dir_path)
|
||||||
|
|
||||||
|
if not directories:
|
||||||
|
raise RuntimeError(f"No 'src' or 'include' directories found in {repo_root}")
|
||||||
|
|
||||||
|
return directories
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Change to the script's directory
|
||||||
|
script_dir = Path(__file__).parent.resolve()
|
||||||
|
os.chdir(script_dir)
|
||||||
|
|
||||||
|
# If the shell is interactive, clean up any flotsam before analyzing
|
||||||
|
# Match bash behavior: check if PS1 is set (indicates interactive shell)
|
||||||
|
# When running a script, PS1 is not set even if stdin/stdout are TTYs
|
||||||
|
if os.environ.get("PS1"):
|
||||||
|
try:
|
||||||
|
subprocess.run(["git", "clean", "-ix"], check=False, timeout=30)
|
||||||
|
except (subprocess.TimeoutExpired, KeyboardInterrupt):
|
||||||
|
print("Skipping git clean...")
|
||||||
|
except Exception:
|
||||||
|
# If git clean fails for any reason, just continue
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Clean up and create results directory
|
||||||
|
results_dir = script_dir / "results"
|
||||||
|
if results_dir.exists():
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
shutil.rmtree(results_dir)
|
||||||
|
results_dir.mkdir()
|
||||||
|
|
||||||
|
# Find the repository root by searching for src and include directories
|
||||||
|
try:
|
||||||
|
repo_root = find_repo_root(script_dir)
|
||||||
|
scan_dirs = get_scan_directories(repo_root)
|
||||||
|
|
||||||
|
print(f"Found repository root: {repo_root}")
|
||||||
|
print(f"Scanning directories:")
|
||||||
|
for scan_dir in scan_dirs:
|
||||||
|
print(f" - {scan_dir.relative_to(repo_root)}")
|
||||||
|
except RuntimeError as e:
|
||||||
|
print(f"Error: {e}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
print("\nScanning for raw includes...")
|
||||||
|
# Find all #include directives
|
||||||
|
raw_includes: List[Tuple[str, str]] = []
|
||||||
|
rawincludes_file = results_dir / "rawincludes.txt"
|
||||||
|
|
||||||
|
# Write to file as we go to avoid storing everything in memory
|
||||||
|
with open(rawincludes_file, "w", buffering=8192) as raw_f:
|
||||||
|
for dir_path in scan_dirs:
|
||||||
|
print(f" Scanning {dir_path.relative_to(repo_root)}...")
|
||||||
|
|
||||||
|
for file_path in dir_path.rglob("*"):
|
||||||
|
if not file_path.is_file():
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
rel_path_str = str(file_path.relative_to(repo_root))
|
||||||
|
|
||||||
|
# Read file with larger buffer for better performance
|
||||||
|
with open(
|
||||||
|
file_path,
|
||||||
|
"r",
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="ignore",
|
||||||
|
buffering=8192,
|
||||||
|
) as f:
|
||||||
|
for line in f:
|
||||||
|
# Quick check before regex
|
||||||
|
if "#include" not in line or "boost" in line:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if INCLUDE_PATTERN.match(line):
|
||||||
|
line_stripped = line.strip()
|
||||||
|
entry = f"{rel_path_str}:{line_stripped}\n"
|
||||||
|
print(entry, end="")
|
||||||
|
raw_f.write(entry)
|
||||||
|
raw_includes.append((rel_path_str, line_stripped))
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error reading {file_path}: {e}", file=sys.stderr)
|
||||||
|
|
||||||
|
# Build levelization paths and count directly (no need to sort first)
|
||||||
|
print("Build levelization paths")
|
||||||
|
path_counts: Dict[Tuple[str, str], int] = defaultdict(int)
|
||||||
|
|
||||||
|
for file_path, include_line in raw_includes:
|
||||||
|
level = get_level(file_path)
|
||||||
|
include_level = extract_include_level(include_line)
|
||||||
|
|
||||||
|
if include_level and level != include_level:
|
||||||
|
path_counts[(level, include_level)] += 1
|
||||||
|
|
||||||
|
# Sort and deduplicate paths (using dictionary order like bash 'sort -d')
|
||||||
|
print("Sort and deduplicate paths")
|
||||||
|
|
||||||
|
paths_file = results_dir / "paths.txt"
|
||||||
|
with open(paths_file, "w") as f:
|
||||||
|
# Sort using dictionary order: only alphanumeric and spaces matter
|
||||||
|
sorted_items = sorted(
|
||||||
|
path_counts.items(),
|
||||||
|
key=lambda x: (dictionary_sort_key(x[0][0]), dictionary_sort_key(x[0][1])),
|
||||||
|
)
|
||||||
|
for (level, include_level), count in sorted_items:
|
||||||
|
line = f"{count:7} {level} {include_level}\n"
|
||||||
|
print(line.rstrip())
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
# Split into flat-file database
|
||||||
|
print("Split into flat-file database")
|
||||||
|
includes_dir = results_dir / "includes"
|
||||||
|
included_by_dir = results_dir / "included_by"
|
||||||
|
includes_dir.mkdir()
|
||||||
|
included_by_dir.mkdir()
|
||||||
|
|
||||||
|
# Batch writes by grouping data first to avoid repeated file opens
|
||||||
|
includes_data: Dict[str, List[Tuple[str, int]]] = defaultdict(list)
|
||||||
|
included_by_data: Dict[str, List[Tuple[str, int]]] = defaultdict(list)
|
||||||
|
|
||||||
|
# Process in sorted order to match bash script behavior (dictionary order)
|
||||||
|
sorted_items = sorted(
|
||||||
|
path_counts.items(),
|
||||||
|
key=lambda x: (dictionary_sort_key(x[0][0]), dictionary_sort_key(x[0][1])),
|
||||||
|
)
|
||||||
|
for (level, include_level), count in sorted_items:
|
||||||
|
includes_data[level].append((include_level, count))
|
||||||
|
included_by_data[include_level].append((level, count))
|
||||||
|
|
||||||
|
# Write all includes files in sorted order (dictionary order)
|
||||||
|
for level in sorted(includes_data.keys(), key=dictionary_sort_key):
|
||||||
|
entries = includes_data[level]
|
||||||
|
with open(includes_dir / level, "w") as f:
|
||||||
|
for include_level, count in entries:
|
||||||
|
line = f"{include_level} {count}\n"
|
||||||
|
print(line.rstrip())
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
# Write all included_by files in sorted order (dictionary order)
|
||||||
|
for include_level in sorted(included_by_data.keys(), key=dictionary_sort_key):
|
||||||
|
entries = included_by_data[include_level]
|
||||||
|
with open(included_by_dir / include_level, "w") as f:
|
||||||
|
for level, count in entries:
|
||||||
|
line = f"{level} {count}\n"
|
||||||
|
print(line.rstrip())
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
# Search for loops
|
||||||
|
print("Search for loops")
|
||||||
|
loops_file = results_dir / "loops.txt"
|
||||||
|
ordering_file = results_dir / "ordering.txt"
|
||||||
|
|
||||||
|
loops_found: Set[Tuple[str, str]] = set()
|
||||||
|
|
||||||
|
# Pre-load all include files into memory to avoid repeated I/O
|
||||||
|
# This is the biggest optimization - we were reading files repeatedly in nested loops
|
||||||
|
# Use list of tuples to preserve file order
|
||||||
|
includes_cache: Dict[str, List[Tuple[str, int]]] = {}
|
||||||
|
includes_lookup: Dict[str, Dict[str, int]] = {} # For fast lookup
|
||||||
|
|
||||||
|
# Note: bash script uses 'for source in *' which uses standard glob sorting,
|
||||||
|
# NOT dictionary order. So we use standard sorted() here, not dictionary_sort_key.
|
||||||
|
for include_file in sorted(includes_dir.iterdir(), key=lambda p: p.name):
|
||||||
|
if not include_file.is_file():
|
||||||
|
continue
|
||||||
|
|
||||||
|
includes_cache[include_file.name] = []
|
||||||
|
includes_lookup[include_file.name] = {}
|
||||||
|
with open(include_file, "r") as f:
|
||||||
|
for line in f:
|
||||||
|
parts = line.strip().split()
|
||||||
|
if len(parts) >= 2:
|
||||||
|
include_name = parts[0]
|
||||||
|
include_count = int(parts[1])
|
||||||
|
includes_cache[include_file.name].append(
|
||||||
|
(include_name, include_count)
|
||||||
|
)
|
||||||
|
includes_lookup[include_file.name][include_name] = include_count
|
||||||
|
|
||||||
|
with open(loops_file, "w", buffering=8192) as loops_f, open(
|
||||||
|
ordering_file, "w", buffering=8192
|
||||||
|
) as ordering_f:
|
||||||
|
|
||||||
|
# Use standard sorting to match bash glob expansion 'for source in *'
|
||||||
|
for source in sorted(includes_cache.keys()):
|
||||||
|
source_includes = includes_cache[source]
|
||||||
|
|
||||||
|
for include, include_freq in source_includes:
|
||||||
|
# Check if include file exists and references source
|
||||||
|
if include not in includes_lookup:
|
||||||
|
continue
|
||||||
|
|
||||||
|
source_freq = includes_lookup[include].get(source)
|
||||||
|
|
||||||
|
if source_freq is not None:
|
||||||
|
# Found a loop
|
||||||
|
loop_key = tuple(sorted([source, include]))
|
||||||
|
if loop_key in loops_found:
|
||||||
|
continue
|
||||||
|
loops_found.add(loop_key)
|
||||||
|
|
||||||
|
loops_f.write(f"Loop: {source} {include}\n")
|
||||||
|
|
||||||
|
# If the counts are close, indicate that the two modules are
|
||||||
|
# on the same level, though they shouldn't be
|
||||||
|
diff = include_freq - source_freq
|
||||||
|
if diff > 3:
|
||||||
|
loops_f.write(f" {source} > {include}\n\n")
|
||||||
|
elif diff < -3:
|
||||||
|
loops_f.write(f" {include} > {source}\n\n")
|
||||||
|
elif source_freq == include_freq:
|
||||||
|
loops_f.write(f" {include} == {source}\n\n")
|
||||||
|
else:
|
||||||
|
loops_f.write(f" {include} ~= {source}\n\n")
|
||||||
|
else:
|
||||||
|
ordering_f.write(f"{source} > {include}\n")
|
||||||
|
|
||||||
|
# Print results
|
||||||
|
print("\nOrdering:")
|
||||||
|
with open(ordering_file, "r") as f:
|
||||||
|
print(f.read(), end="")
|
||||||
|
|
||||||
|
print("\nLoops:")
|
||||||
|
with open(loops_file, "r") as f:
|
||||||
|
print(f.read(), end="")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
130
.github/scripts/levelization/generate.sh
vendored
130
.github/scripts/levelization/generate.sh
vendored
@@ -1,130 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Usage: generate.sh
|
|
||||||
# This script takes no parameters, reads no environment variables,
|
|
||||||
# and can be run from any directory, as long as it is in the expected
|
|
||||||
# location in the repo.
|
|
||||||
|
|
||||||
pushd $( dirname $0 )
|
|
||||||
|
|
||||||
if [ -v PS1 ]
|
|
||||||
then
|
|
||||||
# if the shell is interactive, clean up any flotsam before analyzing
|
|
||||||
git clean -ix
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure all sorting is ASCII-order consistently across platforms.
|
|
||||||
export LANG=C
|
|
||||||
|
|
||||||
rm -rfv results
|
|
||||||
mkdir results
|
|
||||||
includes="$( pwd )/results/rawincludes.txt"
|
|
||||||
pushd ../../..
|
|
||||||
echo Raw includes:
|
|
||||||
grep -r '^[ ]*#include.*/.*\.h' include src | \
|
|
||||||
grep -v boost | tee ${includes}
|
|
||||||
popd
|
|
||||||
pushd results
|
|
||||||
|
|
||||||
oldifs=${IFS}
|
|
||||||
IFS=:
|
|
||||||
mkdir includes
|
|
||||||
mkdir included_by
|
|
||||||
echo Build levelization paths
|
|
||||||
exec 3< ${includes} # open rawincludes.txt for input
|
|
||||||
while read -r -u 3 file include
|
|
||||||
do
|
|
||||||
level=$( echo ${file} | cut -d/ -f 2,3 )
|
|
||||||
# If the "level" indicates a file, cut off the filename
|
|
||||||
if [[ "${level##*.}" != "${level}" ]]
|
|
||||||
then
|
|
||||||
# Use the "toplevel" label as a workaround for `sort`
|
|
||||||
# inconsistencies between different utility versions
|
|
||||||
level="$( dirname ${level} )/toplevel"
|
|
||||||
fi
|
|
||||||
level=$( echo ${level} | tr '/' '.' )
|
|
||||||
|
|
||||||
includelevel=$( echo ${include} | sed 's/.*["<]//; s/[">].*//' | \
|
|
||||||
cut -d/ -f 1,2 )
|
|
||||||
if [[ "${includelevel##*.}" != "${includelevel}" ]]
|
|
||||||
then
|
|
||||||
# Use the "toplevel" label as a workaround for `sort`
|
|
||||||
# inconsistencies between different utility versions
|
|
||||||
includelevel="$( dirname ${includelevel} )/toplevel"
|
|
||||||
fi
|
|
||||||
includelevel=$( echo ${includelevel} | tr '/' '.' )
|
|
||||||
|
|
||||||
if [[ "$level" != "$includelevel" ]]
|
|
||||||
then
|
|
||||||
echo $level $includelevel | tee -a paths.txt
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo Sort and deduplicate paths
|
|
||||||
sort -ds paths.txt | uniq -c | tee sortedpaths.txt
|
|
||||||
mv sortedpaths.txt paths.txt
|
|
||||||
exec 3>&- #close fd 3
|
|
||||||
IFS=${oldifs}
|
|
||||||
unset oldifs
|
|
||||||
|
|
||||||
echo Split into flat-file database
|
|
||||||
exec 4<paths.txt # open paths.txt for input
|
|
||||||
while read -r -u 4 count level include
|
|
||||||
do
|
|
||||||
echo ${include} ${count} | tee -a includes/${level}
|
|
||||||
echo ${level} ${count} | tee -a included_by/${include}
|
|
||||||
done
|
|
||||||
exec 4>&- #close fd 4
|
|
||||||
|
|
||||||
loops="$( pwd )/loops.txt"
|
|
||||||
ordering="$( pwd )/ordering.txt"
|
|
||||||
pushd includes
|
|
||||||
echo Search for loops
|
|
||||||
# Redirect stdout to a file
|
|
||||||
exec 4>&1
|
|
||||||
exec 1>"${loops}"
|
|
||||||
for source in *
|
|
||||||
do
|
|
||||||
if [[ -f "$source" ]]
|
|
||||||
then
|
|
||||||
exec 5<"${source}" # open for input
|
|
||||||
while read -r -u 5 include includefreq
|
|
||||||
do
|
|
||||||
if [[ -f $include ]]
|
|
||||||
then
|
|
||||||
if grep -q -w $source $include
|
|
||||||
then
|
|
||||||
if grep -q -w "Loop: $include $source" "${loops}"
|
|
||||||
then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
sourcefreq=$( grep -w $source $include | cut -d\ -f2 )
|
|
||||||
echo "Loop: $source $include"
|
|
||||||
# If the counts are close, indicate that the two modules are
|
|
||||||
# on the same level, though they shouldn't be
|
|
||||||
if [[ $(( $includefreq - $sourcefreq )) -gt 3 ]]
|
|
||||||
then
|
|
||||||
echo -e " $source > $include\n"
|
|
||||||
elif [[ $(( $sourcefreq - $includefreq )) -gt 3 ]]
|
|
||||||
then
|
|
||||||
echo -e " $include > $source\n"
|
|
||||||
elif [[ $sourcefreq -eq $includefreq ]]
|
|
||||||
then
|
|
||||||
echo -e " $include == $source\n"
|
|
||||||
else
|
|
||||||
echo -e " $include ~= $source\n"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "$source > $include" >> "${ordering}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exec 5>&- #close fd 5
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exec 1>&4 #close fd 1
|
|
||||||
exec 4>&- #close fd 4
|
|
||||||
cat "${ordering}"
|
|
||||||
cat "${loops}"
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
30
.github/scripts/rename/include.sh
vendored
30
.github/scripts/rename/include.sh
vendored
@@ -1,30 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit the script as soon as an error occurs.
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# This script checks whether there are no new include guards introduced by a new
|
|
||||||
# PR, as header files should use "#pragma once" instead. The script assumes any
|
|
||||||
# include guards will use "XRPL_" as prefix.
|
|
||||||
# Usage: .github/scripts/rename/include.sh <repository directory>
|
|
||||||
|
|
||||||
if [ "$#" -ne 1 ]; then
|
|
||||||
echo "Usage: $0 <repository directory>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
DIRECTORY=$1
|
|
||||||
echo "Processing directory: ${DIRECTORY}"
|
|
||||||
if [ ! -d "${DIRECTORY}" ]; then
|
|
||||||
echo "Error: Directory '${DIRECTORY}' does not exist."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
find "${DIRECTORY}" -type f \( -name "*.h" -o -name "*.hpp" -o -name "*.ipp" \) | while read -r FILE; do
|
|
||||||
echo "Processing file: ${FILE}"
|
|
||||||
if grep -q "#ifndef XRPL_" "${FILE}"; then
|
|
||||||
echo "Please replace all include guards by #pragma once."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "Checking complete."
|
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
||||||
- name: Check levelization
|
- name: Check levelization
|
||||||
run: .github/scripts/levelization/generate.sh
|
run: python .github/scripts/levelization/generate.py
|
||||||
- name: Check for differences
|
- name: Check for differences
|
||||||
env:
|
env:
|
||||||
MESSAGE: |
|
MESSAGE: |
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
removed from loops.txt, it's probably an improvement, while if
|
removed from loops.txt, it's probably an improvement, while if
|
||||||
something was added, it's probably a regression.
|
something was added, it's probably a regression.
|
||||||
|
|
||||||
Run '.github/scripts/levelization/generate.sh' in your repo, commit
|
Run '.github/scripts/levelization/generate.py' in your repo, commit
|
||||||
and push the changes. See .github/scripts/levelization/README.md for
|
and push the changes. See .github/scripts/levelization/README.md for
|
||||||
more info.
|
more info.
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/reusable-check-rename.yml
vendored
2
.github/workflows/reusable-check-rename.yml
vendored
@@ -31,8 +31,6 @@ jobs:
|
|||||||
run: .github/scripts/rename/namespace.sh .
|
run: .github/scripts/rename/namespace.sh .
|
||||||
- name: Check config name
|
- name: Check config name
|
||||||
run: .github/scripts/rename/config.sh .
|
run: .github/scripts/rename/config.sh .
|
||||||
- name: Check include guards
|
|
||||||
run: .github/scripts/rename/include.sh .
|
|
||||||
- name: Check for differences
|
- name: Check for differences
|
||||||
env:
|
env:
|
||||||
MESSAGE: |
|
MESSAGE: |
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -71,3 +71,6 @@ DerivedData
|
|||||||
/.augment
|
/.augment
|
||||||
/.claude
|
/.claude
|
||||||
/CLAUDE.md
|
/CLAUDE.md
|
||||||
|
|
||||||
|
# Python
|
||||||
|
__pycache__
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
"sqlite3/3.49.1#8631739a4c9b93bd3d6b753bac548a63%1765850149.926",
|
"sqlite3/3.49.1#8631739a4c9b93bd3d6b753bac548a63%1765850149.926",
|
||||||
"soci/4.0.3#a9f8d773cd33e356b5879a4b0564f287%1765850149.46",
|
"soci/4.0.3#a9f8d773cd33e356b5879a4b0564f287%1765850149.46",
|
||||||
"snappy/1.1.10#968fef506ff261592ec30c574d4a7809%1765850147.878",
|
"snappy/1.1.10#968fef506ff261592ec30c574d4a7809%1765850147.878",
|
||||||
"secp256k1/0.7.0#0fda78daa3b864deb8a2fbc083398356%1770226294.524",
|
"secp256k1/0.7.0#9c4ab67bdc3860c16ea5b36aed8f74ea%1765850147.928",
|
||||||
"rocksdb/10.5.1#4a197eca381a3e5ae8adf8cffa5aacd0%1765850186.86",
|
"rocksdb/10.5.1#4a197eca381a3e5ae8adf8cffa5aacd0%1765850186.86",
|
||||||
"re2/20230301#ca3b241baec15bd31ea9187150e0b333%1765850148.103",
|
"re2/20230301#ca3b241baec15bd31ea9187150e0b333%1765850148.103",
|
||||||
"protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1765850161.038",
|
"protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1765850161.038",
|
||||||
"openssl/3.5.5#05a4ac5b7323f7a329b2db1391d9941f%1769599205.414",
|
"openssl/3.5.4#1b986e61b38fdfda3b40bebc1b234393%1768312656.257",
|
||||||
"nudb/2.0.9#0432758a24204da08fee953ec9ea03cb%1769436073.32",
|
"nudb/2.0.9#0432758a24204da08fee953ec9ea03cb%1769436073.32",
|
||||||
"lz4/1.10.0#59fc63cac7f10fbe8e05c7e62c2f3504%1765850143.914",
|
"lz4/1.10.0#59fc63cac7f10fbe8e05c7e62c2f3504%1765850143.914",
|
||||||
"libiconv/1.17#1e65319e945f2d31941a9d28cc13c058%1765842973.492",
|
"libiconv/1.17#1e65319e945f2d31941a9d28cc13c058%1765842973.492",
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"date/3.0.4#862e11e80030356b53c2c38599ceb32b%1765850143.772",
|
"date/3.0.4#862e11e80030356b53c2c38599ceb32b%1765850143.772",
|
||||||
"c-ares/1.34.5#5581c2b62a608b40bb85d965ab3ec7c8%1765850144.336",
|
"c-ares/1.34.5#5581c2b62a608b40bb85d965ab3ec7c8%1765850144.336",
|
||||||
"bzip2/1.0.8#c470882369c2d95c5c77e970c0c7e321%1765850143.837",
|
"bzip2/1.0.8#c470882369c2d95c5c77e970c0c7e321%1765850143.837",
|
||||||
"boost/1.90.0#d5e8defe7355494953be18524a7f135b%1769454080.269",
|
"boost/1.90.0#d5e8defe7355494953be18524a7f135b%1765955095.179",
|
||||||
"abseil/20250127.0#99262a368bd01c0ccca8790dfced9719%1766517936.993"
|
"abseil/20250127.0#99262a368bd01c0ccca8790dfced9719%1766517936.993"
|
||||||
],
|
],
|
||||||
"build_requires": [
|
"build_requires": [
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"strawberryperl/5.32.1.1#707032463aa0620fa17ec0d887f5fe41%1765850165.196",
|
"strawberryperl/5.32.1.1#707032463aa0620fa17ec0d887f5fe41%1765850165.196",
|
||||||
"protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1765850161.038",
|
"protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1765850161.038",
|
||||||
"nasm/2.16.01#31e26f2ee3c4346ecd347911bd126904%1765850144.707",
|
"nasm/2.16.01#31e26f2ee3c4346ecd347911bd126904%1765850144.707",
|
||||||
"msys2/cci.latest#eea83308ad7e9023f7318c60d5a9e6cb%1770199879.083",
|
"msys2/cci.latest#1996656c3c98e5765b25b60ff5cf77b4%1764840888.758",
|
||||||
"m4/1.4.19#70dc8bbb33e981d119d2acc0175cf381%1763158052.846",
|
"m4/1.4.19#70dc8bbb33e981d119d2acc0175cf381%1763158052.846",
|
||||||
"cmake/4.2.0#ae0a44f44a1ef9ab68fd4b3e9a1f8671%1765850153.937",
|
"cmake/4.2.0#ae0a44f44a1ef9ab68fd4b3e9a1f8671%1765850153.937",
|
||||||
"cmake/3.31.10#313d16a1aa16bbdb2ca0792467214b76%1765850153.479",
|
"cmake/3.31.10#313d16a1aa16bbdb2ca0792467214b76%1765850153.479",
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class Xrpl(ConanFile):
|
|||||||
"grpc/1.72.0",
|
"grpc/1.72.0",
|
||||||
"libarchive/3.8.1",
|
"libarchive/3.8.1",
|
||||||
"nudb/2.0.9",
|
"nudb/2.0.9",
|
||||||
"openssl/3.5.5",
|
"openssl/3.5.4",
|
||||||
"secp256k1/0.7.0",
|
"secp256k1/0.7.0",
|
||||||
"soci/4.0.3",
|
"soci/4.0.3",
|
||||||
"zlib/1.3.1",
|
"zlib/1.3.1",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_ARCHIVE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_ARCHIVE_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
@@ -15,3 +16,5 @@ void
|
|||||||
extractTarLz4(boost::filesystem::path const& src, boost::filesystem::path const& dst);
|
extractTarLz4(boost::filesystem::path const& src, boost::filesystem::path const& dst);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_BASICCONFIG_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BASICCONFIG_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/contract.h>
|
#include <xrpl/basics/contract.h>
|
||||||
|
|
||||||
@@ -368,3 +369,5 @@ get_if_exists<bool>(Section const& section, std::string const& name, bool& v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_BLOB_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BLOB_H_INCLUDED
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -10,3 +11,5 @@ namespace xrpl {
|
|||||||
using Blob = std::vector<unsigned char>;
|
using Blob = std::vector<unsigned char>;
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_BUFFER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BUFFER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/Slice.h>
|
#include <xrpl/basics/Slice.h>
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
@@ -212,3 +213,5 @@ operator!=(Buffer const& lhs, Buffer const& rhs) noexcept
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_BYTEUTILITIES_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BYTEUTILITIES_H_INCLUDED
|
||||||
|
|
||||||
namespace xrpl {
|
namespace xrpl {
|
||||||
|
|
||||||
@@ -19,3 +20,5 @@ megabytes(T value) noexcept
|
|||||||
static_assert(kilobytes(2) == 2048, "kilobytes(2) == 2048");
|
static_assert(kilobytes(2) == 2048, "kilobytes(2) == 2048");
|
||||||
static_assert(megabytes(3) == 3145728, "megabytes(3) == 3145728");
|
static_assert(megabytes(3) == 3145728, "megabytes(3) == 3145728");
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,138 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2024 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef RIPPLE_BASICS_CANPROCESS_H_INCLUDED
|
|
||||||
#define RIPPLE_BASICS_CANPROCESS_H_INCLUDED
|
|
||||||
|
|
||||||
#include <functional>
|
|
||||||
#include <mutex>
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
/** RAII class to check if an Item is already being processed on another thread,
|
|
||||||
* as indicated by it's presence in a Collection.
|
|
||||||
*
|
|
||||||
* If the Item is not in the Collection, it will be added under lock in the
|
|
||||||
* ctor, and removed under lock in the dtor. The object will be considered
|
|
||||||
* "usable" and evaluate to `true`.
|
|
||||||
*
|
|
||||||
* If the Item is in the Collection, no changes will be made to the collection,
|
|
||||||
* and the CanProcess object will be considered "unusable".
|
|
||||||
*
|
|
||||||
* It's up to the caller to decide what "usable" and "unusable" mean. (e.g.
|
|
||||||
* Process or skip a block of code, or set a flag.)
|
|
||||||
*
|
|
||||||
* The current use is to avoid lock contention that would be involved in
|
|
||||||
* processing something associated with the Item.
|
|
||||||
*
|
|
||||||
* Examples:
|
|
||||||
*
|
|
||||||
* void IncomingLedgers::acquireAsync(LedgerHash const& hash, ...)
|
|
||||||
* {
|
|
||||||
* if (CanProcess check{acquiresMutex_, pendingAcquires_, hash})
|
|
||||||
* {
|
|
||||||
* acquire(hash, ...);
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* bool
|
|
||||||
* NetworkOPsImp::recvValidation(
|
|
||||||
* std::shared_ptr<STValidation> const& val,
|
|
||||||
* std::string const& source)
|
|
||||||
* {
|
|
||||||
* CanProcess check(
|
|
||||||
* validationsMutex_, pendingValidations_, val->getLedgerHash());
|
|
||||||
* BypassAccept bypassAccept =
|
|
||||||
* check ? BypassAccept::no : BypassAccept::yes;
|
|
||||||
* handleNewValidation(app_, val, source, bypassAccept, m_journal);
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class CanProcess
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
template <class Mutex, class Collection, class Item>
|
|
||||||
CanProcess(Mutex& mtx, Collection& collection, Item const& item) : cleanup_(insert(mtx, collection, item))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
~CanProcess()
|
|
||||||
{
|
|
||||||
if (cleanup_)
|
|
||||||
cleanup_();
|
|
||||||
}
|
|
||||||
|
|
||||||
CanProcess(CanProcess const&) = delete;
|
|
||||||
|
|
||||||
CanProcess&
|
|
||||||
operator=(CanProcess const&) = delete;
|
|
||||||
|
|
||||||
explicit
|
|
||||||
operator bool() const
|
|
||||||
{
|
|
||||||
return static_cast<bool>(cleanup_);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
template <bool useIterator, class Mutex, class Collection, class Item>
|
|
||||||
std::function<void()>
|
|
||||||
doInsert(Mutex& mtx, Collection& collection, Item const& item)
|
|
||||||
{
|
|
||||||
std::unique_lock<Mutex> lock(mtx);
|
|
||||||
// TODO: Use structured binding once LLVM 16 is the minimum supported
|
|
||||||
// version. See also: https://github.com/llvm/llvm-project/issues/48582
|
|
||||||
// https://github.com/llvm/llvm-project/commit/127bf44385424891eb04cff8e52d3f157fc2cb7c
|
|
||||||
auto const insertResult = collection.insert(item);
|
|
||||||
auto const it = insertResult.first;
|
|
||||||
if (!insertResult.second)
|
|
||||||
return {};
|
|
||||||
if constexpr (useIterator)
|
|
||||||
return [&, it]() {
|
|
||||||
std::unique_lock<Mutex> lock(mtx);
|
|
||||||
collection.erase(it);
|
|
||||||
};
|
|
||||||
else
|
|
||||||
return [&]() {
|
|
||||||
std::unique_lock<Mutex> lock(mtx);
|
|
||||||
collection.erase(item);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generic insert() function doesn't use iterators because they may get
|
|
||||||
// invalidated
|
|
||||||
template <class Mutex, class Collection, class Item>
|
|
||||||
std::function<void()>
|
|
||||||
insert(Mutex& mtx, Collection& collection, Item const& item)
|
|
||||||
{
|
|
||||||
return doInsert<false>(mtx, collection, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specialize insert() for std::set, which does not invalidate iterators for
|
|
||||||
// insert and erase
|
|
||||||
template <class Mutex, class Item>
|
|
||||||
std::function<void()>
|
|
||||||
insert(Mutex& mtx, std::set<Item>& collection, Item const& item)
|
|
||||||
{
|
|
||||||
return doInsert<true>(mtx, collection, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If set, then the item is "usable"
|
|
||||||
std::function<void()> cleanup_;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_COMPRESSIONALGORITHMS_H_INCLUDED
|
||||||
|
#define XRPL_COMPRESSIONALGORITHMS_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/contract.h>
|
#include <xrpl/basics/contract.h>
|
||||||
|
|
||||||
@@ -132,3 +133,5 @@ lz4Decompress(InputStream& in, std::size_t inSize, std::uint8_t* decompressed, s
|
|||||||
} // namespace compression_algorithms
|
} // namespace compression_algorithms
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_COMPRESSIONALGORITHMS_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_COUNTEDOBJECT_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_COUNTEDOBJECT_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/type_name.h>
|
#include <xrpl/beast/type_name.h>
|
||||||
|
|
||||||
@@ -133,3 +134,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_DECAYINGSAMPLE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_DECAYINGSAMPLE_H_INCLUDED
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@@ -129,3 +130,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_EXPECTED_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_EXPECTED_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/contract.h>
|
#include <xrpl/basics/contract.h>
|
||||||
|
|
||||||
@@ -228,3 +229,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_EXPECTED_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_FILEUTILITIES_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_FILEUTILITIES_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/system/error_code.hpp>
|
#include <boost/system/error_code.hpp>
|
||||||
@@ -17,3 +18,5 @@ void
|
|||||||
writeFileContents(boost::system::error_code& ec, boost::filesystem::path const& destPath, std::string const& contents);
|
writeFileContents(boost::system::error_code& ec, boost::filesystem::path const& destPath, std::string const& contents);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_INTRUSIVEPOINTER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_INTRUSIVEPOINTER_H_INCLUDED
|
||||||
|
|
||||||
#include <concepts>
|
#include <concepts>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
@@ -484,3 +485,4 @@ dynamic_pointer_cast(TT const& v)
|
|||||||
}
|
}
|
||||||
} // namespace intr_ptr
|
} // namespace intr_ptr
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_INTRUSIVEPOINTER_IPP_INCLUDED
|
||||||
|
#define XRPL_BASICS_INTRUSIVEPOINTER_IPP_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/IntrusivePointer.h>
|
#include <xrpl/basics/IntrusivePointer.h>
|
||||||
#include <xrpl/basics/IntrusiveRefCounts.h>
|
#include <xrpl/basics/IntrusiveRefCounts.h>
|
||||||
@@ -702,3 +703,4 @@ SharedWeakUnion<T>::unsafeReleaseNoStore()
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_INTRUSIVEREFCOUNTS_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_INTRUSIVEREFCOUNTS_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -460,3 +461,4 @@ partialDestructorFinished(T** o)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_KEYCACHE_H
|
||||||
|
#define XRPL_BASICS_KEYCACHE_H
|
||||||
|
|
||||||
#include <xrpl/basics/TaggedCache.h>
|
#include <xrpl/basics/TaggedCache.h>
|
||||||
#include <xrpl/basics/base_uint.h>
|
#include <xrpl/basics/base_uint.h>
|
||||||
@@ -8,3 +9,5 @@ namespace xrpl {
|
|||||||
using KeyCache = TaggedCache<uint256, int, true>;
|
using KeyCache = TaggedCache<uint256, int, true>;
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_KEYCACHE_H
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_LOCALVALUE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_LOCALVALUE_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/thread/tss.hpp>
|
#include <boost/thread/tss.hpp>
|
||||||
|
|
||||||
@@ -106,3 +107,5 @@ LocalValue<T>::operator*()
|
|||||||
lvs->values.emplace(this, std::make_unique<detail::LocalValues::Value<T>>(t_)).first->second->get());
|
lvs->values.emplace(this, std::make_unique<detail::LocalValues::Value<T>>(t_)).first->second->get());
|
||||||
}
|
}
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_LOG_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_LOG_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/UnorderedContainers.h>
|
#include <xrpl/basics/UnorderedContainers.h>
|
||||||
#include <xrpl/beast/utility/Journal.h>
|
#include <xrpl/beast/utility/Journal.h>
|
||||||
@@ -257,3 +258,5 @@ beast::Journal
|
|||||||
debugLog();
|
debugLog();
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_MATHUTILITIES_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_MATHUTILITIES_H_INCLUDED
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
@@ -44,3 +45,5 @@ static_assert(calculatePercent(50'000'001, 100'000'000) == 51);
|
|||||||
static_assert(calculatePercent(99'999'999, 100'000'000) == 100);
|
static_assert(calculatePercent(99'999'999, 100'000'000) == 100);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_NUMBER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_NUMBER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -818,3 +819,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_NUMBER_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_RANGESET_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_RANGESET_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/core/LexicalCast.h>
|
#include <xrpl/beast/core/LexicalCast.h>
|
||||||
|
|
||||||
@@ -172,3 +173,5 @@ prevMissing(RangeSet<T> const& rs, T t, T minVal = 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_RESOLVER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_RESOLVER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/net/IPEndpoint.h>
|
#include <xrpl/beast/net/IPEndpoint.h>
|
||||||
|
|
||||||
@@ -44,3 +45,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_RESOLVERASIO_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_RESOLVERASIO_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/Resolver.h>
|
#include <xrpl/basics/Resolver.h>
|
||||||
#include <xrpl/beast/utility/Journal.h>
|
#include <xrpl/beast/utility/Journal.h>
|
||||||
@@ -17,3 +18,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SHAMAP_HASH_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SHAMAP_HASH_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/base_uint.h>
|
#include <xrpl/basics/base_uint.h>
|
||||||
#include <xrpl/basics/partitioned_unordered_map.h>
|
#include <xrpl/basics/partitioned_unordered_map.h>
|
||||||
@@ -97,3 +98,5 @@ extract(SHAMapHash const& key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_SHAMAP_HASH_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SHAREDWEAKCACHEPOINTER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SHAREDWEAKCACHEPOINTER_H_INCLUDED
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <variant>
|
#include <variant>
|
||||||
@@ -112,3 +113,4 @@ private:
|
|||||||
std::variant<std::shared_ptr<T>, std::weak_ptr<T>> combo_;
|
std::variant<std::shared_ptr<T>, std::weak_ptr<T>> combo_;
|
||||||
};
|
};
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SHAREDWEAKCACHEPOINTER_IPP_INCLUDED
|
||||||
|
#define XRPL_BASICS_SHAREDWEAKCACHEPOINTER_IPP_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/SharedWeakCachePointer.h>
|
#include <xrpl/basics/SharedWeakCachePointer.h>
|
||||||
|
|
||||||
@@ -163,3 +164,4 @@ SharedWeakCachePointer<T>::convertToWeak()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2022, Nikolaos D. Bougalis <nikb@bougalis.net>
|
// Copyright (c) 2022, Nikolaos D. Bougalis <nikb@bougalis.net>
|
||||||
|
|
||||||
#pragma once
|
#ifndef XRPL_BASICS_SLABALLOCATOR_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SLABALLOCATOR_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/ByteUtilities.h>
|
#include <xrpl/basics/ByteUtilities.h>
|
||||||
#include <xrpl/beast/type_name.h>
|
#include <xrpl/beast/type_name.h>
|
||||||
@@ -385,3 +386,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_SLABALLOCATOR_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SLICE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SLICE_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/contract.h>
|
#include <xrpl/basics/contract.h>
|
||||||
#include <xrpl/basics/strHex.h>
|
#include <xrpl/basics/strHex.h>
|
||||||
@@ -230,3 +231,5 @@ makeSlice(std::basic_string<char, Traits, Alloc> const& s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_STRINGUTILITIES_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_STRINGUTILITIES_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/Blob.h>
|
#include <xrpl/basics/Blob.h>
|
||||||
#include <xrpl/basics/strHex.h>
|
#include <xrpl/basics/strHex.h>
|
||||||
@@ -131,3 +132,5 @@ bool
|
|||||||
isProperlyFormedTomlDomain(std::string_view domain);
|
isProperlyFormedTomlDomain(std::string_view domain);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_TAGGEDCACHE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_TAGGEDCACHE_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/IntrusivePointer.h>
|
#include <xrpl/basics/IntrusivePointer.h>
|
||||||
#include <xrpl/basics/Log.h>
|
#include <xrpl/basics/Log.h>
|
||||||
@@ -297,3 +298,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_TAGGEDCACHE_IPP_INCLUDED
|
||||||
|
#define XRPL_BASICS_TAGGEDCACHE_IPP_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/IntrusivePointer.ipp>
|
#include <xrpl/basics/IntrusivePointer.ipp>
|
||||||
#include <xrpl/basics/TaggedCache.h>
|
#include <xrpl/basics/TaggedCache.h>
|
||||||
@@ -783,3 +784,5 @@ TaggedCache<Key, T, IsKeyCache, SharedWeakUnionPointer, SharedPointerType, Hash,
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_TOSTRING_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_TOSTRING_H_INCLUDED
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
@@ -43,3 +44,5 @@ to_string(char const* s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_UNORDEREDCONTAINERS_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_UNORDEREDCONTAINERS_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/hardened_hash.h>
|
#include <xrpl/basics/hardened_hash.h>
|
||||||
#include <xrpl/basics/partitioned_unordered_map.h>
|
#include <xrpl/basics/partitioned_unordered_map.h>
|
||||||
@@ -98,3 +99,5 @@ template <
|
|||||||
using hardened_hash_multiset = std::unordered_multiset<Value, Hash, Pred, Allocator>;
|
using hardened_hash_multiset = std::unordered_multiset<Value, Hash, Pred, Allocator>;
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_UPTIMETIMER_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_UPTIMETIMER_H_INCLUDED
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
@@ -45,3 +46,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_ALGORITHM_H_INCLUDED
|
||||||
|
#define XRPL_ALGORITHM_H_INCLUDED
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
@@ -89,3 +90,5 @@ remove_if_intersect_or_match(FwdIter1 first1, FwdIter1 last1, InputIter2 first2,
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -32,7 +32,8 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#ifndef XRPL_BASICS_BASE64_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BASE64_H_INCLUDED
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -52,3 +53,5 @@ std::string
|
|||||||
base64_decode(std::string_view data);
|
base64_decode(std::string_view data);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#pragma once
|
#ifndef XRPL_BASICS_BASE_UINT_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_BASE_UINT_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/basics/Expected.h>
|
#include <xrpl/basics/Expected.h>
|
||||||
#include <xrpl/basics/Slice.h>
|
#include <xrpl/basics/Slice.h>
|
||||||
@@ -643,3 +644,5 @@ struct is_uniquely_represented<xrpl::base_uint<Bits, Tag>> : public std::true_ty
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_CHRONO_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_CHRONO_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/clock/abstract_clock.h>
|
#include <xrpl/beast/clock/abstract_clock.h>
|
||||||
#include <xrpl/beast/clock/basic_seconds_clock.h>
|
#include <xrpl/beast/clock/basic_seconds_clock.h>
|
||||||
@@ -98,3 +99,5 @@ stopwatch()
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_COMPARATORS_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_COMPARATORS_H_INCLUDED
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
@@ -52,3 +53,5 @@ using equal_to = std::equal_to<T>;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_CONTRACT_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_CONTRACT_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/type_name.h>
|
#include <xrpl/beast/type_name.h>
|
||||||
|
|
||||||
@@ -47,3 +48,5 @@ Throw(Args&&... args)
|
|||||||
LogicError(std::string const& how) noexcept;
|
LogicError(std::string const& how) noexcept;
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_HARDENED_HASH_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_HARDENED_HASH_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/hash/hash_append.h>
|
#include <xrpl/beast/hash/hash_append.h>
|
||||||
#include <xrpl/beast/hash/xxhasher.h>
|
#include <xrpl/beast/hash/xxhasher.h>
|
||||||
@@ -92,3 +93,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef JOIN_H_INCLUDED
|
||||||
|
#define JOIN_H_INCLUDED
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
@@ -79,3 +80,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_MAKE_SSLCONTEXT_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_MAKE_SSLCONTEXT_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/asio/ssl/context.hpp>
|
#include <boost/asio/ssl/context.hpp>
|
||||||
|
|
||||||
@@ -19,3 +20,5 @@ make_SSLContextAuthed(
|
|||||||
std::string const& cipherList);
|
std::string const& cipherList);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_MULDIV_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_MULDIV_H_INCLUDED
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
@@ -21,3 +22,5 @@ std::optional<std::uint64_t>
|
|||||||
mulDiv(std::uint64_t value, std::uint64_t mul, std::uint64_t div);
|
mulDiv(std::uint64_t value, std::uint64_t mul, std::uint64_t div);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_PARTITIONED_UNORDERED_MAP_H
|
||||||
|
#define XRPL_BASICS_PARTITIONED_UNORDERED_MAP_H
|
||||||
|
|
||||||
#include <xrpl/beast/hash/uhash.h>
|
#include <xrpl/beast/hash/uhash.h>
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
@@ -392,3 +393,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_PARTITIONED_UNORDERED_MAP_H
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_RANDOM_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_RANDOM_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
#include <xrpl/beast/xor_shift_engine.h>
|
#include <xrpl/beast/xor_shift_engine.h>
|
||||||
@@ -173,3 +174,5 @@ rand_bool()
|
|||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif // XRPL_BASICS_RANDOM_H_INCLUDED
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_ROCKSDB_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_ROCKSDB_H_INCLUDED
|
||||||
|
|
||||||
#if XRPL_ROCKSDB_AVAILABLE
|
#if XRPL_ROCKSDB_AVAILABLE
|
||||||
// #include <rocksdb2/port/port_posix.h>
|
// #include <rocksdb2/port/port_posix.h>
|
||||||
@@ -27,3 +28,5 @@
|
|||||||
#include <rocksdb/write_batch.h>
|
#include <rocksdb/write_batch.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SAFE_CAST_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SAFE_CAST_H_INCLUDED
|
||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
@@ -68,3 +69,5 @@ unsafe_cast(Src s) noexcept
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_SCOPE_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SCOPE_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -219,3 +220,5 @@ template <class Mutex>
|
|||||||
scope_unlock(std::unique_lock<Mutex>&) -> scope_unlock<Mutex>;
|
scope_unlock(std::unique_lock<Mutex>&) -> scope_unlock<Mutex>;
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2022, Nikolaos D. Bougalis <nikb@bougalis.net>
|
// Copyright (c) 2022, Nikolaos D. Bougalis <nikb@bougalis.net>
|
||||||
|
|
||||||
#pragma once
|
#ifndef XRPL_BASICS_SPINLOCK_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_SPINLOCK_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -200,3 +201,5 @@ public:
|
|||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef XRPL_BASICS_STRHEX_H_INCLUDED
|
||||||
|
#define XRPL_BASICS_STRHEX_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/algorithm/hex.hpp>
|
#include <boost/algorithm/hex.hpp>
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
@@ -26,3 +27,5 @@ strHex(T const& from)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2014, Nikolaos D. Bougalis <nikb@bougalis.net>
|
// Copyright (c) 2014, Nikolaos D. Bougalis <nikb@bougalis.net>
|
||||||
|
|
||||||
#pragma once
|
#ifndef BEAST_UTILITY_TAGGED_INTEGER_H_INCLUDED
|
||||||
|
#define BEAST_UTILITY_TAGGED_INTEGER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/hash/hash_append.h>
|
#include <xrpl/beast/hash/hash_append.h>
|
||||||
|
|
||||||
@@ -201,3 +202,4 @@ struct is_contiguously_hashable<xrpl::tagged_integer<Int, Tag>, HashAlgorithm>
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_ASIO_IO_LATENCY_PROBE_H_INCLUDED
|
||||||
|
#define BEAST_ASIO_IO_LATENCY_PROBE_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -225,3 +226,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CHRONO_ABSTRACT_CLOCK_H_INCLUDED
|
||||||
|
#define BEAST_CHRONO_ABSTRACT_CLOCK_H_INCLUDED
|
||||||
|
|
||||||
namespace beast {
|
namespace beast {
|
||||||
|
|
||||||
@@ -88,3 +89,5 @@ get_abstract_clock()
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CHRONO_BASIC_SECONDS_CLOCK_H_INCLUDED
|
||||||
|
#define BEAST_CHRONO_BASIC_SECONDS_CLOCK_H_INCLUDED
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
@@ -32,3 +33,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CHRONO_MANUAL_CLOCK_H_INCLUDED
|
||||||
|
#define BEAST_CHRONO_MANUAL_CLOCK_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/clock/abstract_clock.h>
|
#include <xrpl/beast/clock/abstract_clock.h>
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
@@ -74,3 +75,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_CONTAINER_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_CONTAINER_H_INCLUDED
|
||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
@@ -11,3 +12,5 @@ struct is_aged_container : std::false_type
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_CONTAINER_UTILITY_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_CONTAINER_UTILITY_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/aged_container.h>
|
#include <xrpl/beast/container/aged_container.h>
|
||||||
|
|
||||||
@@ -23,3 +24,5 @@ expire(AgedContainer& c, std::chrono::duration<Rep, Period> const& age)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_MAP_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_MAP_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
||||||
|
|
||||||
@@ -17,3 +18,5 @@ template <
|
|||||||
using aged_map = detail::aged_ordered_container<false, true, Key, T, Clock, Compare, Allocator>;
|
using aged_map = detail::aged_ordered_container<false, true, Key, T, Clock, Compare, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_MULTIMAP_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_MULTIMAP_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
||||||
|
|
||||||
@@ -17,3 +18,5 @@ template <
|
|||||||
using aged_multimap = detail::aged_ordered_container<true, true, Key, T, Clock, Compare, Allocator>;
|
using aged_multimap = detail::aged_ordered_container<true, true, Key, T, Clock, Compare, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_MULTISET_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_MULTISET_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
||||||
|
|
||||||
@@ -16,3 +17,5 @@ template <
|
|||||||
using aged_multiset = detail::aged_ordered_container<true, false, Key, void, Clock, Compare, Allocator>;
|
using aged_multiset = detail::aged_ordered_container<true, false, Key, void, Clock, Compare, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_SET_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_SET_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
#include <xrpl/beast/container/detail/aged_ordered_container.h>
|
||||||
|
|
||||||
@@ -16,3 +17,5 @@ template <
|
|||||||
using aged_set = detail::aged_ordered_container<false, false, Key, void, Clock, Compare, Allocator>;
|
using aged_set = detail::aged_ordered_container<false, false, Key, void, Clock, Compare, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_UNORDERED_MAP_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_UNORDERED_MAP_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
||||||
|
|
||||||
@@ -18,3 +19,5 @@ template <
|
|||||||
using aged_unordered_map = detail::aged_unordered_container<false, true, Key, T, Clock, Hash, KeyEqual, Allocator>;
|
using aged_unordered_map = detail::aged_unordered_container<false, true, Key, T, Clock, Hash, KeyEqual, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_UNORDERED_MULTIMAP_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_UNORDERED_MULTIMAP_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
||||||
|
|
||||||
@@ -18,3 +19,5 @@ template <
|
|||||||
using aged_unordered_multimap = detail::aged_unordered_container<true, true, Key, T, Clock, Hash, KeyEqual, Allocator>;
|
using aged_unordered_multimap = detail::aged_unordered_container<true, true, Key, T, Clock, Hash, KeyEqual, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_UNORDERED_MULTISET_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_UNORDERED_MULTISET_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
||||||
|
|
||||||
@@ -18,3 +19,5 @@ using aged_unordered_multiset =
|
|||||||
detail::aged_unordered_container<true, false, Key, void, Clock, Hash, KeyEqual, Allocator>;
|
detail::aged_unordered_container<true, false, Key, void, Clock, Hash, KeyEqual, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_AGED_UNORDERED_SET_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_AGED_UNORDERED_SET_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
#include <xrpl/beast/container/detail/aged_unordered_container.h>
|
||||||
|
|
||||||
@@ -17,3 +18,5 @@ template <
|
|||||||
using aged_unordered_set = detail::aged_unordered_container<false, false, Key, void, Clock, Hash, KeyEqual, Allocator>;
|
using aged_unordered_set = detail::aged_unordered_container<false, false, Key, void, Clock, Hash, KeyEqual, Allocator>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_DETAIL_AGED_ASSOCIATIVE_CONTAINER_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_DETAIL_AGED_ASSOCIATIVE_CONTAINER_H_INCLUDED
|
||||||
|
|
||||||
namespace beast {
|
namespace beast {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
@@ -32,3 +33,5 @@ struct aged_associative_container_extract_t<false>
|
|||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_DETAIL_AGED_CONTAINER_ITERATOR_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_DETAIL_AGED_CONTAINER_ITERATOR_H_INCLUDED
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
@@ -145,3 +146,5 @@ private:
|
|||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_DETAIL_AGED_ORDERED_CONTAINER_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_DETAIL_AGED_ORDERED_CONTAINER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/clock/abstract_clock.h>
|
#include <xrpl/beast/clock/abstract_clock.h>
|
||||||
#include <xrpl/beast/container/aged_container.h>
|
#include <xrpl/beast/container/aged_container.h>
|
||||||
@@ -1686,3 +1687,5 @@ expire(
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_CONTAINER_DETAIL_AGED_UNORDERED_CONTAINER_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_DETAIL_AGED_UNORDERED_CONTAINER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/clock/abstract_clock.h>
|
#include <xrpl/beast/clock/abstract_clock.h>
|
||||||
#include <xrpl/beast/container/aged_container.h>
|
#include <xrpl/beast/container/aged_container.h>
|
||||||
@@ -2225,3 +2226,5 @@ expire(
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
// Official repository: https://github.com/boostorg/beast
|
// Official repository: https://github.com/boostorg/beast
|
||||||
//
|
//
|
||||||
|
|
||||||
#pragma once
|
#ifndef BEAST_CONTAINER_DETAIL_EMPTY_BASE_OPTIMIZATION_H_INCLUDED
|
||||||
|
#define BEAST_CONTAINER_DETAIL_EMPTY_BASE_OPTIMIZATION_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/type_traits/is_final.hpp>
|
#include <boost/type_traits/is_final.hpp>
|
||||||
|
|
||||||
@@ -88,3 +89,5 @@ public:
|
|||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
// Copyright (c) 2013 - Raw Material Software Ltd.
|
// Copyright (c) 2013 - Raw Material Software Ltd.
|
||||||
// Please visit http://www.juce.com
|
// Please visit http://www.juce.com
|
||||||
|
|
||||||
#pragma once
|
#ifndef BEAST_CORE_CURRENT_THREAD_NAME_H_INCLUDED
|
||||||
|
#define BEAST_CORE_CURRENT_THREAD_NAME_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/predef.h>
|
#include <boost/predef.h>
|
||||||
|
|
||||||
@@ -52,3 +53,5 @@ std::string
|
|||||||
getCurrentThreadName();
|
getCurrentThreadName();
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_MODULE_CORE_TEXT_LEXICALCAST_H_INCLUDED
|
||||||
|
#define BEAST_MODULE_CORE_TEXT_LEXICALCAST_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/utility/instrumentation.h>
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
@@ -207,3 +208,5 @@ lexicalCast(In in, Out defaultValue = Out())
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INTRUSIVE_LIST_H_INCLUDED
|
||||||
|
#define BEAST_INTRUSIVE_LIST_H_INCLUDED
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
@@ -573,3 +574,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INTRUSIVE_LOCKFREESTACK_H_INCLUDED
|
||||||
|
#define BEAST_INTRUSIVE_LOCKFREESTACK_H_INCLUDED
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
@@ -267,3 +268,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_MODULE_CORE_DIAGNOSTIC_SEMANTICVERSION_H_INCLUDED
|
||||||
|
#define BEAST_MODULE_CORE_DIAGNOSTIC_SEMANTICVERSION_H_INCLUDED
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -94,3 +95,5 @@ operator<(SemanticVersion const& lhs, SemanticVersion const& rhs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_HASH_HASH_APPEND_H_INCLUDED
|
||||||
|
#define BEAST_HASH_HASH_APPEND_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/container/flat_set.hpp>
|
#include <boost/container/flat_set.hpp>
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
@@ -439,3 +440,5 @@ hash_append(HashAlgorithm& h, std::error_code const& ec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_HASH_UHASH_H_INCLUDED
|
||||||
|
#define BEAST_HASH_UHASH_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/hash/hash_append.h>
|
#include <xrpl/beast/hash/hash_append.h>
|
||||||
#include <xrpl/beast/hash/xxhasher.h>
|
#include <xrpl/beast/hash/xxhasher.h>
|
||||||
@@ -24,3 +25,5 @@ struct uhash
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_HASH_XXHASHER_H_INCLUDED
|
||||||
|
#define BEAST_HASH_XXHASHER_H_INCLUDED
|
||||||
|
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
|
|
||||||
@@ -151,3 +152,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_COLLECTOR_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_COLLECTOR_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/Counter.h>
|
#include <xrpl/beast/insight/Counter.h>
|
||||||
#include <xrpl/beast/insight/Event.h>
|
#include <xrpl/beast/insight/Event.h>
|
||||||
@@ -119,3 +120,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_COUNTER_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_COUNTER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/CounterImpl.h>
|
#include <xrpl/beast/insight/CounterImpl.h>
|
||||||
|
|
||||||
@@ -93,3 +94,5 @@ private:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_COUNTERIMPL_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_COUNTERIMPL_H_INCLUDED
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -20,3 +21,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_EVENT_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_EVENT_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/EventImpl.h>
|
#include <xrpl/beast/insight/EventImpl.h>
|
||||||
|
|
||||||
@@ -60,3 +61,5 @@ private:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_EVENTIMPL_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_EVENTIMPL_H_INCLUDED
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -20,3 +21,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_GAUGE_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_GAUGE_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/GaugeImpl.h>
|
#include <xrpl/beast/insight/GaugeImpl.h>
|
||||||
|
|
||||||
@@ -123,3 +124,5 @@ private:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_GAUGEIMPL_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_GAUGEIMPL_H_INCLUDED
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -23,3 +24,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_GROUP_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_GROUP_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/Collector.h>
|
#include <xrpl/beast/insight/Collector.h>
|
||||||
|
|
||||||
@@ -21,3 +22,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_GROUPS_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_GROUPS_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/Collector.h>
|
#include <xrpl/beast/insight/Collector.h>
|
||||||
#include <xrpl/beast/insight/Group.h>
|
#include <xrpl/beast/insight/Group.h>
|
||||||
@@ -34,3 +35,5 @@ make_Groups(Collector::ptr const& collector);
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_HOOK_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_HOOK_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/HookImpl.h>
|
#include <xrpl/beast/insight/HookImpl.h>
|
||||||
|
|
||||||
@@ -39,3 +40,5 @@ private:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_HOOKIMPL_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_HOOKIMPL_H_INCLUDED
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -16,3 +17,5 @@ public:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/Collector.h>
|
#include <xrpl/beast/insight/Collector.h>
|
||||||
#include <xrpl/beast/insight/Counter.h>
|
#include <xrpl/beast/insight/Counter.h>
|
||||||
@@ -13,3 +14,5 @@
|
|||||||
#include <xrpl/beast/insight/HookImpl.h>
|
#include <xrpl/beast/insight/HookImpl.h>
|
||||||
#include <xrpl/beast/insight/NullCollector.h>
|
#include <xrpl/beast/insight/NullCollector.h>
|
||||||
#include <xrpl/beast/insight/StatsDCollector.h>
|
#include <xrpl/beast/insight/StatsDCollector.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef BEAST_INSIGHT_METER_H_INCLUDED
|
||||||
|
#define BEAST_INSIGHT_METER_H_INCLUDED
|
||||||
|
|
||||||
#include <xrpl/beast/insight/MeterImpl.h>
|
#include <xrpl/beast/insight/MeterImpl.h>
|
||||||
|
|
||||||
@@ -78,3 +79,5 @@ private:
|
|||||||
|
|
||||||
} // namespace insight
|
} // namespace insight
|
||||||
} // namespace beast
|
} // namespace beast
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user