Files
toml11/docs/content.ja/docs/reference/comments.md
2024-06-15 19:27:42 +09:00

18 KiB

+++ title = "comments.hpp" type = "docs" +++

comments.hpp

color.hppでは、コメントを保持するクラスが提供されます。

toml::preserve_comments

preserve_commentsは、コメントを保持するコンテナです。

std::vector<std::string>が持つメンバ関数を全て持っています。

コメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。

namespace toml
{
class preserve_comments;

bool operator==(const preserve_comments&, const preserve_comments&);
bool operator!=(const preserve_comments&, const preserve_comments&);
bool operator< (const preserve_comments&, const preserve_comments&);
bool operator<=(const preserve_comments&, const preserve_comments&);
bool operator> (const preserve_comments&, const preserve_comments&);
bool operator>=(const preserve_comments&, const preserve_comments&);

void swap(preserve_comments&,        preserve_comments&);
void swap(preserve_comments&,        std::vector<std::string>&);
void swap(std::vector<std::string>&, preserve_comments&);

std::ostream& operator<<(std::ostream&, const preserve_comments&);
} //toml

メンバ型

using container_type         = std::vector<std::string>;
using size_type              = container_type::size_type;
using difference_type        = container_type::difference_type;
using value_type             = container_type::value_type;
using reference              = container_type::reference;
using const_reference        = container_type::const_reference;
using pointer                = container_type::pointer;
using const_pointer          = container_type::const_pointer;
using iterator               = container_type::iterator;
using const_iterator         = container_type::const_iterator;
using reverse_iterator       = container_type::reverse_iterator;
using const_reverse_iterator = container_type::const_reverse_iterator;

メンバ関数

デフォルトコンストラクタ

preserve_comments() = default;

空のpreserve_commentsを構築します。

コピー・ムーブコンストラクタ

preserve_comments(preserve_comments const&) = default;
preserve_comments(preserve_comments &&)     = default;

preserve_commentsをコピー・ムーブ構築します。

コンストラクタ(std::vector<std::string>)

explicit preserve_comments(const std::vector<std::string>& c);
explicit preserve_comments(std::vector<std::string>&& c);

std::vector<std::string>の内容を持つpreserve_commentsを構築します。

コンストラクタ(discard_comments)

explicit preserve_comments(const discard_comments&);

空のpreserve_commentsを構築します。

コンストラクタ(Iterator)

template<typename InputIterator>
preserve_comments(InputIterator first, InputIterator last);

std::stringを指すInputIteratorが表す範囲からpreserve_commentsを構築します。

コンストラクタ(std::initializer_list)

preserve_comments(std::initializer_list<std::string> x);

std::initializer_list<std::string>が表す範囲からpreserve_commentsを構築します。

コンストラクタ(サイズ指定)

explicit preserve_comments(size_type n);
preserve_comments(size_type n, const std::string& x);

n個のコメントを持つpreserve_commentsを構築します。

std::stringを渡した場合、そのコメントをn個に複製します。

デストラクタ

~preserve_comments() = default;

preserve_commentsを破棄します。

operator=(preserve_comments)

preserve_comments& operator=(preserve_comments const&) = default;
preserve_comments& operator=(preserve_comments &&)     = default;

preserve_commentsをコピー・ムーブ代入します。

operator=(std::vector<std::string>)

preserve_comments& operator=(const std::vector<std::string>& c);
preserve_comments& operator=(std::vector<std::string>&& c);

std::vector<std::string>をコピー・ムーブ代入します。

assign

template<typename InputIterator>
void assign(InputIterator first, InputIterator last);
void assign(std::initializer_list<std::string> ini);
void assign(size_type n, const std::string& val);

std::vector<std::string>::assignと同等の効果を持ちます。

insert

iterator insert(const_iterator p, const std::string& x);
iterator insert(const_iterator p, std::string&&      x);
iterator insert(const_iterator p, size_type n, const std::string& x);
template<typename InputIterator>
iterator insert(const_iterator p, InputIterator first, InputIterator last);
iterator insert(const_iterator p, std::initializer_list<std::string> ini);

std::vector<std::string>::insertと同等の効果を持ちます。

emplace

template<typename ... Ts>
iterator emplace(const_iterator p, Ts&& ... args);

std::vector<std::string>::insertと同等の効果を持ちます。

erase

iterator erase(const_iterator pos);
iterator erase(const_iterator first, const_iterator last);

std::vector<std::string>::insertと同等の効果を持ちます。

swap

void swap(preserve_comments& other);

他のpreserve_commentsと内容を交換します。

push_back

void push_back(const std::string& v);
void push_back(std::string&&      v);

std::vector<std::string>::push_backと同等の効果を持ちます。

pop_back

void pop_back();

std::vector<std::string>::pop_backと同等の効果を持ちます。

emplace_back

template<typename ... Ts>
void emplace_back(Ts&& ... args);

std::vector<std::string>::emplace_backと同等の効果を持ちます。

clear

void clear();

std::vector<std::string>::clearと同等の効果を持ちます。

size

size_type size() const noexcept;

std::vector<std::string>::sizeと同等の効果を持ちます。

max_size

size_type max_size() const noexcept;

std::vector<std::string>::max_sizeと同等の効果を持ちます。

capacity

size_type capacity() const noexcept;

std::vector<std::string>::capacityと同等の効果を持ちます。

empty

bool empty() const noexcept;

std::vector<std::string>::emptyと同等の効果を持ちます。

reserve

void reserve(size_type n);

std::vector<std::string>::reserveと同等の効果を持ちます。

resize

void resize(size_type n);
void resize(size_type n, const std::string& c);

std::vector<std::string>::resizeと同等の効果を持ちます。

shrink_to_fit

void shrink_to_fit();

std::vector<std::string>::shrink_to_fitと同等の効果を持ちます。

operator[]

reference       operator[](const size_type n)       noexcept;
const_reference operator[](const size_type n) const noexcept;

std::vector<std::string>::operator[]と同等の効果を持ちます。

at

reference       at(const size_type n)      ;
const_reference at(const size_type n) const;

std::vector<std::string>::atと同等の効果を持ちます。

front

reference       front()       noexcept;
const_reference front() const noexcept;

std::vector<std::string>::frontと同等の効果を持ちます。

back

reference       back()        noexcept;
const_reference back()  const noexcept;

std::vector<std::string>::backと同等の効果を持ちます。

data

pointer         data()        noexcept;
const_pointer   data()  const noexcept;

std::vector<std::string>::dataと同等の効果を持ちます。

begin/end

iterator       begin()        noexcept;
iterator       end()          noexcept;
const_iterator begin()  const noexcept;
const_iterator end()    const noexcept;
const_iterator cbegin() const noexcept;
const_iterator cend()   const noexcept;

std::vector<std::string>::begin/endと同等の効果を持ちます。

rbegin/rend

reverse_iterator       rbegin()        noexcept;
reverse_iterator       rend()          noexcept;
const_reverse_iterator rbegin()  const noexcept;
const_reverse_iterator rend()    const noexcept;
const_reverse_iterator crbegin() const noexcept;
const_reverse_iterator crend()   const noexcept;

std::vector<std::string>::rbegin/rendと同等の効果を持ちます。

非メンバ関数

比較演算子

bool operator==(const preserve_comments&, const preserve_comments&);
bool operator!=(const preserve_comments&, const preserve_comments&);
bool operator< (const preserve_comments&, const preserve_comments&);
bool operator<=(const preserve_comments&, const preserve_comments&);
bool operator> (const preserve_comments&, const preserve_comments&);
bool operator>=(const preserve_comments&, const preserve_comments&);

std::vector<std::string>と同様に比較を行います。

swap

void swap(preserve_comments&,        preserve_comments&);
void swap(preserve_comments&,        std::vector<std::string>&);
void swap(std::vector<std::string>&, preserve_comments&);

ストリーム演算子

std::ostream& operator<<(std::ostream&, const preserve_comments&);

コメントとして出力します。

先頭が#でない場合、#が補われます。

toml::discard_comments

discard_commentsは、コメントを破棄するコンテナです。

std::vector<std::string>が持つメンバ関数を全て持っていますが、内容を変更する関数を呼び出しても何も効果はなく、常に空になります。

namespace toml
{
class discard_comments;

bool operator==(const discard_comments&, const discard_comments&);
bool operator!=(const discard_comments&, const discard_comments&);
bool operator< (const discard_comments&, const discard_comments&);
bool operator<=(const discard_comments&, const discard_comments&);
bool operator> (const discard_comments&, const discard_comments&);
bool operator>=(const discard_comments&, const discard_comments&);

void swap(discard_comments&, discard_comments&);

std::ostream& operator<<(std::ostream&, const discard_comments&);
} //toml

メンバ型

// container_type is not defined
using size_type              = std::size_t;
using difference_type        = std::ptrdiff_t;
using value_type             = std::string;
using reference              = std::string&;
using const_reference        = std::string const&;
using pointer                = std::string*;
using const_pointer          = std::string const*;
using iterator               = /* internal type: empty-iterator */
using const_iterator         = /* internal type: empty-iterator */
using reverse_iterator       = /* internal type: empty-iterator */
using const_reverse_iterator = /* internal type: empty-iterator */

デフォルトコンストラクタ

discard_comments() = default;

空のdiscard_commentsを構築します。

コピー・ムーブコンストラクタ

discard_comments(discard_comments const&) = default;
discard_comments(discard_comments &&)     = default;

discard_commentsをコピー・ムーブ構築します。

コンストラクタ(std::vector<std::string>)

explicit discard_comments(const std::vector<std::string>& c);
explicit discard_comments(std::vector<std::string>&& c);

空のdiscard_commentsを構築します。引数の内容は無視されます。

コンストラクタ(preserve_comments)

explicit discard_comments(const preserve_comments&);

空のdiscard_commentsを構築します。引数の内容は無視されます。

コンストラクタ(Iterator)

template<typename InputIterator>
discard_comments(InputIterator first, InputIterator last);

空のdiscard_commentsを構築します。引数の内容は無視されます。

コンストラクタ(std::initializer_list)

discard_comments(std::initializer_list<std::string> x);

空のdiscard_commentsを構築します。引数の内容は無視されます。

コンストラクタ(サイズ指定)

explicit discard_comments(size_type n);
discard_comments(size_type n, const std::string& x);

空のdiscard_commentsを構築します。引数の内容は無視されます。

デストラクタ

~discard_comments() = default;

discard_commentsを破棄します。

operator=(discard_comments)

discard_comments& operator=(discard_comments const&) = default;
discard_comments& operator=(discard_comments &&)     = default;

discard_commentsをコピー・ムーブ代入します。

operator=(std::vector<std::string>)

discard_comments& operator=(const std::vector<std::string>& c);
discard_comments& operator=(std::vector<std::string>&& c);

何もしません。引数の内容は無視されます。

assign

template<typename InputIterator>
void assign(InputIterator first, InputIterator last);
void assign(std::initializer_list<std::string> ini);
void assign(size_type n, const std::string& val);

何もしません。引数の内容は無視されます。

insert

iterator insert(const_iterator p, const std::string& x);
iterator insert(const_iterator p, std::string&&      x);
iterator insert(const_iterator p, size_type n, const std::string& x);
template<typename InputIterator>
iterator insert(const_iterator p, InputIterator first, InputIterator last);
iterator insert(const_iterator p, std::initializer_list<std::string> ini);

何もしません。引数の内容は無視されます。

emplace

template<typename ... Ts>
iterator emplace(const_iterator p, Ts&& ... args);

何もしません。引数の内容は無視されます。

erase

iterator erase(const_iterator pos);
iterator erase(const_iterator first, const_iterator last);

何もしません。引数の内容は無視されます。

swap

void swap(discard_comments& other);

他のdiscard_commentsと内容を交換します。

push_back

void push_back(const std::string& v);
void push_back(std::string&&      v);

何もしません。引数の内容は無視されます。

pop_back

void pop_back();

何もしません。引数の内容は無視されます。

emplace_back

template<typename ... Ts>
void emplace_back(Ts&& ... args);

何もしません。引数の内容は無視されます。

clear

void clear();

何もしません。引数の内容は無視されます。

size

size_type size() const noexcept;

常に0を返します。

max_size

size_type max_size() const noexcept;

常に0を返します。

capacity

size_type capacity() const noexcept;

常に0を返します。

empty

bool empty() const noexcept;

常にtrueを返します。

reserve

void reserve(size_type n);

何もしません。引数の内容は無視されます。

resize

void resize(size_type n);
void resize(size_type n, const std::string& c);

何もしません。引数の内容は無視されます。

shrink_to_fit

void shrink_to_fit();

何もしません。引数の内容は無視されます。

operator[]

reference       operator[](const size_type n)       noexcept;
const_reference operator[](const size_type n) const noexcept;

未定義動作です。

at

reference       at(const size_type n)      ;
const_reference at(const size_type n) const;

std::out_of_rangeを送出します。

front

reference       front()       noexcept;
const_reference front() const noexcept;

未定義動作です。

back

reference       back()        noexcept;
const_reference back()  const noexcept;

未定義動作です。

data

pointer         data()        noexcept;
const_pointer   data()  const noexcept;

常にnullptrを返します。

begin/end

iterator       begin()        noexcept;
iterator       end()          noexcept;
const_iterator begin()  const noexcept;
const_iterator end()    const noexcept;
const_iterator cbegin() const noexcept;
const_iterator cend()   const noexcept;

内部で定義されたempty-iteratorを返します。

empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

rbegin/rend

reverse_iterator       rbegin()        noexcept;
reverse_iterator       rend()          noexcept;
const_reverse_iterator rbegin()  const noexcept;
const_reverse_iterator rend()    const noexcept;
const_reverse_iterator crbegin() const noexcept;
const_reverse_iterator crend()   const noexcept;

内部で定義されたempty-iteratorを返します。

empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

非メンバ関数

比較演算子

bool operator==(const discard_comments&, const discard_comments&);
bool operator!=(const discard_comments&, const discard_comments&);
bool operator< (const discard_comments&, const discard_comments&);
bool operator<=(const discard_comments&, const discard_comments&);
bool operator> (const discard_comments&, const discard_comments&);
bool operator>=(const discard_comments&, const discard_comments&);

discard_commentsは全て同じ値です。==には常にtrueを、!=には常にfalseを返します。

swap

void swap(discard_comments&, discard_comments&);

二つのdiscard_commentsを交換します。

ストリーム演算子

std::ostream& operator<<(std::ostream&, const discard_comments&);

何も出力しません。

関連項目

  • [value.hpp]({{<ref "value.md">}})