本文整理汇总了C++中buffer::data方法的典型用法代码示例。如果您正苦于以下问题:C++ buffer::data方法的具体用法?C++ buffer::data怎么用?C++ buffer::data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buffer
的用法示例。
在下文中一共展示了buffer::data方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: output
void
checkInflate(buffer const& input, buffer const& original)
{
for(std::size_t i = 0; i < input.size(); ++i)
{
buffer output(original.size());
inflate_stream zs;
zs.avail_in = 0;
zs.next_in = 0;
zs.next_out = output.data();
zs.avail_out = output.capacity();
if(i > 0)
{
zs.next_in = (Byte*)input.data();
zs.avail_in = i;
auto result = zs.write(Z_FULL_FLUSH);
expect(result == Z_OK);
}
zs.next_in = (Byte*)input.data() + i;
zs.avail_in = input.size() - i;
auto result = zs.write(Z_FULL_FLUSH);
output.resize(output.capacity() - zs.avail_out);
expect(result == Z_OK);
expect(output.size() == original.size());
expect(std::memcmp(
output.data(), original.data(), original.size()) == 0);
}
}
示例2: parse_notation_expr
static expr parse_notation_expr(parser & p, buffer<expr> const & locals) {
auto pos = p.pos();
expr r = p.parse_expr();
r = abstract(r, locals.size(), locals.data());
check_notation_expr(r, pos);
return r;
}
示例3: collect_and_normalize_dependencies
/* Collect (and sort) dependencies of collected parameters */
void collect_and_normalize_dependencies(buffer<expr> & norm_params) {
name_map<expr> new_types;
for (unsigned i = 0; i < m_params.size(); i++) {
expr x = m_params[i];
expr new_type = collect(m_ctx.instantiate_mvars(m_ctx.infer(x)));
new_types.insert(mlocal_name(x), new_type);
}
local_context const & lctx = m_ctx.lctx();
std::sort(m_params.begin(), m_params.end(), [&](expr const & l1, expr const & l2) {
return lctx.get_local_decl(l1)->get_idx() < lctx.get_local_decl(l2)->get_idx();
});
for (unsigned i = 0; i < m_params.size(); i++) {
expr x = m_params[i];
expr type = *new_types.find(mlocal_name(x));
expr new_type = replace_locals(type, i, m_params.data(), norm_params.data());
expr new_param = m_ctx.push_local(local_pp_name(x), new_type, local_info(x));
norm_params.push_back(new_param);
}
}
示例4: for_each
void parse_table::for_each(buffer<transition> & ts,
std::function<void(unsigned, transition const *,
list<accepting> const &)> const & fn) const {
if (!is_nil(m_ptr->m_accept))
fn(ts.size(), ts.data(), m_ptr->m_accept);
m_ptr->m_children.for_each([&](name const & k, list<pair<action, parse_table>> const & lst) {
for (auto const & p : lst) {
ts.push_back(transition(k, p.first));
p.second.for_each(ts, fn);
ts.pop_back();
}
});
}
示例5: mk_structure_instance
expr mk_structure_instance(name const & s, buffer<name> const & fns, buffer<expr> const & fvs) {
lean_assert(fns.size() == fvs.size());
return mk_structure_instance_core(s, to_list(fns), fvs.size(), fvs.data());
}
示例6: memcmp
inline bool operator==(const buffer& lhs, const buffer& rhs) {
if (lhs.size() == rhs.size()) {
return memcmp(lhs.data(), rhs.data(), lhs.size()) == 0;
}
return false;
}
示例7: distribute_extra_args_over_minors
/* Given a cases_on application, distribute extra arguments over minor premisses.
cases_on major minor_1 ... minor_n a_1 ... a_n
We apply a similar transformation at erase_irrelevant, but its effect can be undone
in subsequent compilation steps.
*/
void distribute_extra_args_over_minors(name const & I_name, buffer<name> const & cnames, buffer<expr> & args) {
lean_assert(args.size() > cnames.size() + 1);
unsigned nparams = *inductive::get_num_params(env(), I_name);
for (unsigned i = 0; i < cnames.size(); i++) {
unsigned carity = get_constructor_arity(env(), cnames[i]);
unsigned data_sz = carity - nparams;
type_context::tmp_locals locals(ctx());
expr new_minor = args[i+1];
for (unsigned j = 0; j < data_sz; j++) {
if (!is_lambda(new_minor))
throw exception("unexpected occurrence of 'cases_on' expression, "
"the minor premise is expected to be a lambda-expression");
expr local = locals.push_local_from_binding(new_minor);
new_minor = instantiate(binding_body(new_minor), local);
}
new_minor = beta_reduce(mk_app(new_minor, args.size() - cnames.size() - 1, args.data() + cnames.size() + 1));
args[i+1] = locals.mk_lambda(new_minor);
}
args.shrink(cnames.size() + 1);
}
示例8: reallocate
inline void cipher_stream::reallocate(size_t alloc)
{
m_buffer.data().resize(alloc);
}
示例9: replace_locals
expr replace_locals(expr const & e, buffer<expr> const & locals, buffer<expr> const & terms) {
lean_assert(locals.size() == terms.size());
lean_assert(std::all_of(locals.begin(), locals.end(), is_local));
return replace_locals(e, locals.size(), locals.data(), terms.data());
}
示例10: memcpy
buffer<T>::buffer(const buffer& rhs)
: size_{rhs.size_}
, buf_{type_trait<T>::alloc(size_)} {
memcpy(data(), rhs.data(), size_ * sizeof(T));
}
示例11: buffer_size
inline size_t buffer_size(const buffer& buf)
{
return buf.data().size();
}
示例12:
inline bool operator<(const buffer& lhs, const buffer& rhs)
{
return lhs.data() < rhs.data();
}
示例13: buffer_cast
T buffer_cast(const buffer& buf)
{
return reinterpret_cast<T>(&buf.data()[0]);
}
示例14: p
table(buffer& a) : p(a.data()), sz(a.size()) {}
示例15: array
array(buffer& a) : p(a.data()), sz(a.size()) {}