Checkout Tools
  • last updated 5 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Fix some Doxygen mark-up.
* subversion/bindings/cxx/src/client_status.cpp

(status, async::status): Move closer to the almost-always-auto style.

* subversion/bindings/cxx/include/svnxx/client/status.hpp

(client::async::status): Tweak wording in the docstring.

* subversion/bindings/cxx/include/svnxx/detail/future.hpp


future::future): Fix -Wshadow warning from gcc.

Invent a model of asynchronous operations in SVN++.

[in subversion/bindings/cxx]

* README: Document a warning about the current async op model.

* svnxx/client/context.hpp

(detail::context_ptr): Make this a shared pointer because asynchronous

operations have to hold on to a weak reference to the context.

(detail::weak_context_ptr): New.

* svnxx/client/status.hpp: Don't include <future>, use detail/future.hpp.

(client::status): Pass revision by const-reference. Update docstring.

(client::async::status): New.

* svnxx/detail/future.hpp: New. Provides std::future-like tools for SVN++.

* src/future.cpp,

src/private/future_private.hpp: New.

* src/private/client_context_private.hpp

(impl::unwrap): Return a shared pointer to the client context.

* src/private.hpp: Include private/future_private.hpp.

* src/client_status.cpp

(impl::(anon)::status_func): Moved here so that it can be used from

impl::status. Check that the wrapped callback functor is not null

before invoking it.

(impl::status): New; common implementation for the status operation.

(client::status): Use impl::status. Keep the client context alive.

(client::async::status): New.

* tests/test_client_status.cpp

(working_copy_root, status_callback): Move to anonymous scope.

(async_example): New test case.

* subversion/bindings/cxx/src/aprwrap/pool.hpp

(apr::pool::get): Fix typo in comment. No functional change.

Keep the SVN++ global pool alive as long as there are any users.

[in subversion/bindings/cxx]

* include/svnxx/init.hpp

(detail::global_state): Renamed from detail::context.

(init): Derive directly from the global_state shared pointer.

(init::~init): Add explicit destructor (for debugging).

* src/private/init_private.hpp: Do not include svn_private_config.h.

(detail::global_state): Renamed from detail::context.

(detail::global_state::get): Don't try to translate the exception

message, because neither APR nor the localisation library are

likely to have been initialized.

* src/aprwrap/pool.hpp: Include init_private.hpp.

(apr::pool::pool): Add a constructor overload that uses the global

pool from a known global state reference.

* src/aprwrap/impl.cpp

(apr::pool::get_root_pool): Rename detail::context to detail::global_state.

* src/debug.cpp,

src/private/debug_private.hpp: New files.

* src/private/client_context_private.hpp: Include init_private.hpp.

(client::context::state): New member, keeps the global state alive as

long as the client context is viable.

(client::context::get_state): New accessor.

(client::context::get_ctx): Renamed from 'get'.

(impl::unwrap): Make the context_wrapper a final class.

* src/init.cpp:

Include debug_private.hpp and apr_pools.h instead of svn_pools.h.

(init::init): Use global_state and add pool debugging logs.

(init::~init): Implement, with pool debugging logs.

(notify_root_pool_cleanup): New; tracks the global pool's destruction.

(create_root_pool): Add pool debugging logs. Avoid leaking the root pool.

(detail::global_state): Add pool debugging logs.

* src/client_status.cpp

(client::status): use the client context's renamed get_ctx() accessor.

* tests/test_init.cpp: Rename detail::context to detail::global_state.

Remove the nonsense with multiple implementation namespaces in SVN++.

[in subversion/bindings/cxx/src]

* private/client_context_private.hpp

(client::impl::context): Removed, along with its namespace.

(impl::unwrap): New. We'll rely on overload resolution instead.

* private/client_private.hpp: Removed, it's no longer needed.

* private.hpp: Do not include private/client_private.hpp.

* client_status.cpp (client::status): Update implementation.

Begin implementing client operations in SVN++, starting with status.

* build.conf (private-includes): Add SVN++ client headers.

* doc/doxygen.conf (INPUT): Likewise.

[in subversion/bindings/cxx]

* include/svnxx/client/context.hpp: New.

* include/svnxx/client/status.hpp: Likewise new.

* include/svnxx/client.hpp: New again; includes the above two headers.

* include/svnxx.hpp: Include svnxx/client.hpp.

* src/client_context.cpp: New.

* src/client_status.cpp: New.

* src/private.hpp: Include the above two headers.

* src/private/client_private.hpp: New.

* cxx/src/private/client_context_private.hpp: And new again.

* src/private/exception_private.hpp

(iteration_stopped): Typofixed from iteration_etopped.

* tests/test_exceptions.cpp: Propagate the above typofixtion.

* tests/test_client_status.cpp: New. Contains a (disabled) example of how the

svn::client::status operation might be used.

    • ?
  1. … 2 more files in changeset.
Make SVN++ compile and work without warnings in maintainer mode on Linux/g++.

* build.conf (svnxx-tests): Repeat the library dependencies of libsvnxx,

since our generator isn't smart enough to inherit its dependencies

at link time.

[in subversion/bindings/cxx]

* include/svnxx/exception.hpp (message::message): Fix -Wshadow.

* src/aprwrap/pool.hpp (pool::safe_alloc): Likewise.

* src/exception.cpp

(checked_call..error_deleter): Likewise.

(handle_one_error..message_builder::message_builder): Likewise.

* tests/test_revision.cpp (assignment): Do not rely on the system_clock's

time_point precision being smaller than the time we store in svn::revision.

Cast it to the nearest second instead.

* tests/test_strings.cpp (generate_string_data): Fix -Wsign-compare.

  1. … 1 more file in changeset.
Make conversions between svn_opt_revision_kind and svn::revision::kind

compile-time constant expressions in SVN++.

[in subversion/bindings/cxx/src]

* private/revision_private.hpp: Include <stdexcept>. Don't include svn_types.h.

(impl::convert): Implement here as inline constexpr functions.

* revision.cpp: Update include directives.

(impl::convert): Remove implementation.

Make conversions between svn_depth_t and svn::depth compile-time

constant expressions in SVN++.

[in subversion/bindings/cxx/src]

* private/depth_private.hpp: Include <stdexcept>. Do not include svn_types.h.

(impl::convert): Implement here as inline constexpr functions.

* depth.cpp: Update include directives.

(impl::convert): Remove implementation.

Make the revision kind in SVN++ svn::revision explicitly immutable.

It's illogical to be able to even theoretically change the kind of a revision

object, so we make that restriction explicit by making the class member const.

[in subversion/bindings/cxx]

* include/svnxx/revision.hpp: Include <new> for placement-new.

(revision::tag): Make this immutable.

(revision::operator=): New; work around the kind tag's immutability by

destroying the object and creating a new object in place.

* tests/test_revision.cpp

(assignment): New test case.

Move (some of the) standalone types into separate implementation headers

so that SVN++ can use them directly without exposing APR or other dependencies.

* subversion/include/svn_opt_impl.h: New file.

(svn_opt_revision_kind): Moved here from svn_opt.h

* subversion/include/svn_opt.h: Include svn_opt_impl.h.

(svn_opt_revision_kind): Moved away.

* subversion/include/svn_types_impl.h: New file.

(svn_error_t): Forward declaration.

(svn_node_kind_t, svn_tristate_t,

svn_revnum_t, SVN_INVALID_REVNUM, svn_depth_t): Moved here from svn_types.h.

* subversion/include/svn_types.h: Include svn_types_impl.h.

(svn_node_kind_t, svn_tristate_t,

svn_revnum_t, SVN_INVALID_REVNUM, svn_depth_t): Moved away.

[in subversion/bindings/cxx]

* include/svnxx/depth.hpp: Include svn_types_impl.h.

(depth): Define enum constant values from svn_depth_t.

* include/svnxx/exception.hpp: Include svn_types_impl.h.

(detail::svn_error): Remove forward declaration.

(detail::error_ptr): Use svn_error_t directly.

* include/svnxx/revision.hpp: Include svn_opt_impl.h and svn_types_impl.h.

(revision::number): Use svn_revnum_t for the underlying type and

SVN_INVALID_REVNUM for the 'invalid' enum constant value.

(revision::kind): Define enum constant values from svn_opt_revision_kind.

* include/svnxx/tristate.hpp: Include svn_types_impl.h.

(tristate::value): Define enum constant values from svn_tristate_t.

* src/exception.cpp

(detail::svn_error): Removed.

(impl::checked_call): Use svn_error_t instead of detail::svn_error.

  1. … 4 more files in changeset.
* subversion/bindings/cxx/include/svnxx/revision.hpp

(revision, revision::number): Fix docstrings; no functional change.

Replace the APR array wrapper in SVN++:

- renames to apr::array from APR::Array;

- removes APR::ConstArray;

- removes array iterations and adds compliant iterators instead.

- updates all array tests.

* subversion/bindings/cxx/include/svnxx.hpp:

(SVN): Remove obsolete namespace alias.

Silence two more maintainer-mode warnings in SVN++.

* subversion/bindings/cxx/tests/test_revision.cpp

(roundtrip_conversions): Use initializer list for constructing svn::revision

in a context where otherwise C++ was trying to infer something strange

that I don't really understand (yet).

Move SVN++ implementation details to the 'impl' namespace, as documented.

(Affects lots of files; no functional change.)

Fix maintainer-mode warnings in SVN++, some of which were actually errors.

[in subversion/bindings/cxx]

* src/depth.cpp

(svn_depth_t convert(depth), depth convert(svn_depth_t): Cast enum values

to the appropriate type for comparison.

* src/revision.cpp

(svn_opt_revision_kind convert(revision::kind,

revision::kind convert(svn_opt_revision_kind): Likewise, and add the missing

debug-mode check for the value of svn_opt_revision_previous.

* tests/test_revision.cpp

(postconditions_kind): Remove unused local typedef.

Rename SVN++ private headers as documented. No functional change.

[in subversion/bindings/cxx]

* src/private/*_private.hpp: Renamed from *-private.hpp

* src/private.hpp,



src/aprwrap/impl.cpp: Update include paths.

* tests/test_depth.cpp,




tests/test_tristate.cpp: Update include paths.

    • ?
  1. … 6 more files in changeset.
Adjust layout of SVN++ API internals to the documented state.

* doc/doxygen.conf (INPUT): Add new directory pattern.

[in subversion/bindings/cxx]

* include/svnxx/detail: New directory.

* include/svnxx/noncopyable.hpp: Moved from here ...

* include/svnxx/detail/noncopyable.hpp: ... to here.

Update docs and include guard.

* include/svnxx/detail/doxygen.hpp: New; document implementation details.

* src/aprwrap/pool.hpp,

src/private/init-private.hpp: Change include path of noncopyable.hpp.

    • ?
  1. … 1 more file in changeset.
* subversion/bindings/cxx/README: Document namespace use and source layout.

This change is an example of our time machine at work. Neither namespace

usage nor source layout currently follow what's documented in README.

Minor documentation tweaks in SVN++.

[in subversion/bindings/cxx/include]

* svnxx.hpp: Add @file tag. Remove C++ check.

* svnxx/depth.hp: Add @file tag. Fix comment at end of include guard.

* svnxx/exception.hpp: Add @file tag. Change the title of the

svnxx_exceptions group and add a @brief description to avoid seeing the

heading-formatted description in summary lists. Also explain that

the implementation can throw standard exceptions.

* svnxx/init.hpp: Add @file tag. Remove C++ check.

* svnxx/noncopyable.hpp: Add @file tag.

* svnxx/tristate.hpp: Add @file tag. Remove C++ check.

* subversion/bindings/cxx/include/svnxx.hpp:

Include svnxx/depth.hpp and svnxx/revision.hpp.

Add SVN++ encapsulation of svn_revnum_t and svn_opt_revision_t.

[in subversion/bindings/cxx]

* include/svnxx/revision.hpp: New.

* src/private/revision-private.hpp: New.

* src/private.hpp: Include revision-private.hpp.

* src/revision.cpp: New.

* tests/test_revision.cpp: New.

* subversion/bindings/cxx/include/svnxx/depth.hpp

(depth): Use explicit std:: qualifier on enum type.

Added string conversion tests to SVN++.

* subversion/bindings/cxx/tests/test_strings.cpp: New.

Add SVN++ encapsulation of svn_depth_t.

[in subversion/bindings/cxx]

* include/svnxx/depth.hpp: New file.

* src/depth.cpp: New; implementation of svn::depth conversions.

* src/private.hpp: Include depth-private.hpp and strings-private.hpp.

* private/depth-private.hpp: New file.

* private/strings-private.hpp: New; string conversions.

* tests/test_depth.cpp: New.

Check allocation size for overflow in SVN++ pools.

Suggested by: danielsh

* subversion/bindings/cxx/src/aprwrap/pool.hpp: Include <functional>

(pool::allocation_size_overflowed): New exception type.

(pool::allocator): New.

(pool::safe_alloc): New; checks size before allocation.

(pool::alloc, pool::allocz): Use safe_alloc().

(pool, pool::iteration): Remove noexcept decorators from members where

they were just blatant lies, since our pools can and do throw exceptions.

* tests/test_aprwrap_pools.cpp: Don't include <algorithm> or <stdexcept>

but do include <cstdlib> for std::size_t and also svnxx/exception.hpp.

(svn): New; namespace alias.

(overflow): New test case.