mirror of
https://github.com/zeek/zeek.git
synced 2025-10-06 00:28:21 +00:00
switch looping over vectors to use iterators
This commit is contained in:
parent
6f82c1610e
commit
ffbbacd3b1
1 changed files with 46 additions and 51 deletions
|
@ -57,13 +57,10 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<ListValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<ListValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
|
||||||
auto i = 0U;
|
|
||||||
|
|
||||||
auto l = make_intrusive<ListVal>(TYPE_ANY);
|
auto l = make_intrusive<ListVal>(TYPE_ANY);
|
||||||
|
|
||||||
while ( i < n )
|
for ( auto& iv : init_vals )
|
||||||
l->Append(im->ConstVals(init_vals[i++]));
|
l->Append(im->ConstVals(iv));
|
||||||
|
|
||||||
ivec[offset] = l;
|
ivec[offset] = l;
|
||||||
}
|
}
|
||||||
|
@ -72,15 +69,15 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<VectorValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<VectorValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
auto iv_it = init_vals.begin();
|
||||||
auto i = 0U;
|
auto iv_end = init_vals.end();
|
||||||
auto t = init_vals[i++];
|
auto t = *(iv_it++);
|
||||||
|
|
||||||
auto vt = cast_intrusive<VectorType>(im->Types(t));
|
auto vt = cast_intrusive<VectorType>(im->Types(t));
|
||||||
auto vv = make_intrusive<VectorVal>(vt);
|
auto vv = make_intrusive<VectorVal>(vt);
|
||||||
|
|
||||||
while ( i < n )
|
while ( iv_it != iv_end )
|
||||||
vv->Append(im->ConstVals(init_vals[i++]));
|
vv->Append(im->ConstVals(*(iv_it++)));
|
||||||
|
|
||||||
ivec[offset] = vv;
|
ivec[offset] = vv;
|
||||||
}
|
}
|
||||||
|
@ -89,19 +86,20 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<RecordValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<RecordValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
auto iv_it = init_vals.begin();
|
||||||
auto i = 0U;
|
auto iv_end = init_vals.end();
|
||||||
auto t = init_vals[i++];
|
auto t = *(iv_it++);
|
||||||
|
|
||||||
auto rt = cast_intrusive<RecordType>(im->Types(t));
|
auto rt = cast_intrusive<RecordType>(im->Types(t));
|
||||||
auto rv = make_intrusive<RecordVal>(rt);
|
auto rv = make_intrusive<RecordVal>(rt);
|
||||||
|
|
||||||
while ( i < n )
|
auto field = 0;
|
||||||
|
while ( iv_it != iv_end )
|
||||||
{
|
{
|
||||||
auto v = init_vals[i];
|
auto v = *(iv_it++);
|
||||||
if ( v >= 0 )
|
if ( v >= 0 )
|
||||||
rv->Assign(i - 1, im->ConstVals(v));
|
rv->Assign(field, im->ConstVals(v));
|
||||||
++i;
|
++field;
|
||||||
}
|
}
|
||||||
|
|
||||||
ivec[offset] = rv;
|
ivec[offset] = rv;
|
||||||
|
@ -111,17 +109,17 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<TableValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<TableValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
auto iv_it = init_vals.begin();
|
||||||
auto i = 0U;
|
auto iv_end = init_vals.end();
|
||||||
auto t = init_vals[i++];
|
auto t = *(iv_it++);
|
||||||
|
|
||||||
auto tt = cast_intrusive<TableType>(im->Types(t));
|
auto tt = cast_intrusive<TableType>(im->Types(t));
|
||||||
auto tv = make_intrusive<TableVal>(tt);
|
auto tv = make_intrusive<TableVal>(tt);
|
||||||
|
|
||||||
while ( i < n )
|
while ( iv_it != iv_end )
|
||||||
{
|
{
|
||||||
auto index = im->ConstVals(init_vals[i++]);
|
auto index = im->ConstVals(*(iv_it++));
|
||||||
auto v = init_vals[i++];
|
auto v = *(iv_it++);
|
||||||
auto value = v >= 0 ? im->ConstVals(v) : nullptr;
|
auto value = v >= 0 ? im->ConstVals(v) : nullptr;
|
||||||
tv->Assign(index, value);
|
tv->Assign(index, value);
|
||||||
}
|
}
|
||||||
|
@ -133,11 +131,9 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<FileValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<FileValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
// Note, in the following we use element 1, not 0, because we
|
||||||
auto i = 0U;
|
// don't need the "type" value in element 0.
|
||||||
auto t = init_vals[i++]; // not used
|
auto fn = im->Strings(init_vals[1]);
|
||||||
|
|
||||||
auto fn = im->Strings(init_vals[i++]);
|
|
||||||
auto fv = make_intrusive<FileVal>(make_intrusive<File>(fn, "w"));
|
auto fv = make_intrusive<FileVal>(make_intrusive<File>(fn, "w"));
|
||||||
|
|
||||||
ivec[offset] = fv;
|
ivec[offset] = fv;
|
||||||
|
@ -147,16 +143,15 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<FuncValPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<FuncValPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
auto iv_it = init_vals.begin();
|
||||||
auto i = 0U;
|
auto iv_end = init_vals.end();
|
||||||
auto t = init_vals[i++];
|
auto t = *(iv_it++);
|
||||||
|
auto fn = im->Strings(*(iv_it++));
|
||||||
auto fn = im->Strings(init_vals[i++]);
|
|
||||||
|
|
||||||
std::vector<p_hash_type> hashes;
|
std::vector<p_hash_type> hashes;
|
||||||
|
|
||||||
while ( i < n )
|
while ( iv_it != iv_end )
|
||||||
hashes.push_back(im->Hashes(init_vals[i++]));
|
hashes.push_back(im->Hashes(*(iv_it++)));
|
||||||
|
|
||||||
ivec[offset] = lookup_func__CPP(fn, hashes, im->Types(t));
|
ivec[offset] = lookup_func__CPP(fn, hashes, im->Types(t));
|
||||||
}
|
}
|
||||||
|
@ -211,12 +206,10 @@ template <class T>
|
||||||
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<AttributesPtr>& ivec, int offset,
|
void CPP_IndexedInits<T>::Generate(InitsManager* im, std::vector<AttributesPtr>& ivec, int offset,
|
||||||
ValElemVec& init_vals) const
|
ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
|
||||||
auto i = 0U;
|
|
||||||
|
|
||||||
std::vector<AttrPtr> a_list;
|
std::vector<AttrPtr> a_list;
|
||||||
while ( i < n )
|
|
||||||
a_list.emplace_back(im->Attrs(init_vals[i++]));
|
for ( auto& iv : init_vals )
|
||||||
|
a_list.emplace_back(im->Attrs(iv));
|
||||||
|
|
||||||
ivec[offset] = make_intrusive<Attributes>(a_list, nullptr, false, false);
|
ivec[offset] = make_intrusive<Attributes>(a_list, nullptr, false, false);
|
||||||
}
|
}
|
||||||
|
@ -333,18 +326,18 @@ void CPP_TypeInits::Generate(InitsManager* im, vector<TypePtr>& ivec, int offset
|
||||||
|
|
||||||
TypePtr CPP_TypeInits::BuildEnumType(InitsManager* im, ValElemVec& init_vals) const
|
TypePtr CPP_TypeInits::BuildEnumType(InitsManager* im, ValElemVec& init_vals) const
|
||||||
{
|
{
|
||||||
auto name = im->Strings(init_vals[1]);
|
auto iv_it = init_vals.begin();
|
||||||
|
auto iv_end = init_vals.end();
|
||||||
|
auto name = im->Strings(*++iv_it); // skip element [0]
|
||||||
auto et = get_enum_type__CPP(name);
|
auto et = get_enum_type__CPP(name);
|
||||||
|
|
||||||
if ( et->Names().empty() )
|
if ( et->Names().empty() )
|
||||||
{
|
{
|
||||||
auto n = init_vals.size();
|
++iv_it;
|
||||||
auto i = 2U;
|
while ( iv_it != iv_end )
|
||||||
|
|
||||||
while ( i < n )
|
|
||||||
{
|
{
|
||||||
auto e_name = im->Strings(init_vals[i++]);
|
auto e_name = im->Strings(*(iv_it++));
|
||||||
auto e_val = init_vals[i++];
|
auto e_val = *(iv_it++);
|
||||||
et->AddNameInternal(e_name, e_val);
|
et->AddNameInternal(e_name, e_val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,11 +367,13 @@ TypePtr CPP_TypeInits::BuildTypeList(InitsManager* im, ValElemVec& init_vals, in
|
||||||
{
|
{
|
||||||
const auto& tl = cast_intrusive<TypeList>(inits_vec[offset]);
|
const auto& tl = cast_intrusive<TypeList>(inits_vec[offset]);
|
||||||
|
|
||||||
auto n = init_vals.size();
|
auto iv_it = init_vals.begin();
|
||||||
auto i = 1U;
|
auto iv_end = init_vals.end();
|
||||||
|
|
||||||
while ( i < n )
|
++iv_it;
|
||||||
tl->Append(im->Types(init_vals[i++]));
|
|
||||||
|
while ( iv_it != iv_end )
|
||||||
|
tl->Append(im->Types(*(iv_it++)));
|
||||||
|
|
||||||
return tl;
|
return tl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue