Sha256: 91debb00bfab53a6cffd28a5ea8df2eab9e7357df91cf8f34091ade42e06ac60

Contents?: true

Size: 1.83 KB

Versions: 16

Compression:

Stored size: 1.83 KB

Contents

#pragma once

#include "types.hpp"
#include "export.h"
#include <vector>

namespace hocon {

    /**
     * Subtype of {@link ConfigValue} representing a list value, as in JSON's
     * {@code [1,2,3]} syntax.
     *
     * <p>
     * {@code ConfigList} implements {@code java.util.List<ConfigValue>} so you can
     * use it like a regular Java list. Or call {@link #unwrapped()} to unwrap the
     * list elements into plain Java values.
     *
     * <p>
     * Like all {@link ConfigValue} subtypes, {@code ConfigList} is immutable. This
     * makes it threadsafe and you never have to create "defensive copies." The
     * mutator methods from {@link java.util.List} all throw
     * {@link java.lang.UnsupportedOperationException}.
     *
     * <p>
     * The {@link ConfigValue#valueType} method on a list returns
     * {@link ConfigValueType#LIST}.
     *
     * <p>
     * <em>Do not implement {@code ConfigList}</em>; it should only be implemented
     * by the config library. Arbitrary implementations will not work because the
     * library internals assume a specific concrete implementation. Also, this
     * interface is likely to grow new methods over time, so third-party
     * implementations will break.
     *
     */

    class LIBCPP_HOCON_EXPORT config_list : public config_value {
    public:
        config_list(shared_origin origin) : config_value(move(origin)) {}

        // list interface
        using iterator = std::vector<shared_value>::const_iterator;
        virtual bool is_empty() const = 0;
        virtual size_t size() const = 0;
        virtual shared_value operator[](size_t index) const = 0;
        virtual shared_value get(size_t index) const = 0;
        virtual iterator begin() const = 0;
        virtual iterator end() const = 0;
        virtual unwrapped_value unwrapped() const = 0;
    };
}  // namespace hocon

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.12.1.cfacter.20181031 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.6.cfacter.20181031 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.12.1.cfacter.20181023 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.5.cfacter.20181022 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.12.0.cfacter.20181004 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.12.0.cfacter.20181001 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.12.0.cfacter.20180918 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.4.cfacter.20180821 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.3.cfacter.20180716 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.2.cfacter.20180612 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.9.6.cfacter.20180612 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.2.cfacter.20180606 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.9.6.cfacter.20180606 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
facter-3.11.0.cfacter.20180319 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp
cfacter-3.11.0.rc.20180314 ext/facter/cpp-hocon/lib/inc/hocon/config_list.hpp