[libcxx-commits] [PATCH] D93593: [libc++][format] Add __format_arg_store.

Mark de Wever via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Dec 20 04:36:32 PST 2020


Mordante created this revision.
Mordante added reviewers: EricWF, ldionne, mclow.lists, miscco, curdeius.
Mordante requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

This implements the struct __format_arg_store and its dependencies:

- the class basic_format_arg,
- the class basic_format_args,
- the class basic_format_context,
- the function make_format_args,
- the function make_format_args,
- the function visit_format_arg,
- several Standard required typedefs.

The following parts will be implemented in a later patch:

- the child class basic_format_arg::handle,
- the function basic_format_arg::basic_format_arg(const T* p).

The following extension has been implemented:

- the class basic_format_arg supports __[u]int128_t when there's libc++ support for 128 bit integrals.

Implements parts of:

- P0645 Text Formatting

Completes:

- LWG3371 visit_format_arg and make_format_args are not hidden friends

Note it's possible to make the code more efficient, but for now the focus
is to get a Standard conforming implementation. Improving the QoI will be
done later.

Note the formatting is done with clang-format default settings. Should we
improve these settings or do we prefer to manually adjust the code and
protect it with clang-format: off comments?

Depends on D93166 <https://reviews.llvm.org/D93166> D93414 <https://reviews.llvm.org/D93414>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D93593

Files:
  libcxx/docs/Cxx2aStatusIssuesStatus.csv
  libcxx/include/format
  libcxx/test/std/utilities/format/format.arguments/format.arg.store/class.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.arg.store/make_format_args.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.arg.store/make_wformat_args.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.arg/operator_bool.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.args/__size.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.args/ctor.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.args/get.pass.cpp
  libcxx/test/std/utilities/format/format.arguments/format.args/types.compile.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/advance_to.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/arg.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/ctor.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/locale.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/out.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.context/types.compile.pass.cpp
  libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/check_arg_id.verify.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93593.312969.patch
Type: text/x-patch
Size: 82963 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201220/b78a23ef/attachment-0001.bin>


More information about the libcxx-commits mailing list