mirror of
https://github.com/zeek/zeek.git
synced 2025-10-11 11:08:20 +00:00
Merge remote-tracking branch 'origin/topic/vern/CPP-standalone-maint'
* origin/topic/vern/CPP-standalone-maint: fixes for compiling "standalone" C++ scripts
This commit is contained in:
commit
d59bb8cc2c
6 changed files with 21 additions and 2 deletions
4
CHANGES
4
CHANGES
|
@ -1,3 +1,7 @@
|
||||||
|
5.2.0-dev.35 | 2022-09-30 16:40:22 -0700
|
||||||
|
|
||||||
|
* fixes for compiling "standalone" C++ scripts (Vern Paxson, Corelight)
|
||||||
|
|
||||||
5.2.0-dev.33 | 2022-09-30 12:36:34 -0700
|
5.2.0-dev.33 | 2022-09-30 12:36:34 -0700
|
||||||
|
|
||||||
* fix for deprecated when's where the inner frame is larger than the outer frame (Vern Paxson, Corelight)
|
* fix for deprecated when's where the inner frame is larger than the outer frame (Vern Paxson, Corelight)
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
5.2.0-dev.33
|
5.2.0-dev.35
|
||||||
|
|
|
@ -278,6 +278,15 @@ detail::TraversalCode Type::Traverse(detail::TraversalCallback* cb) const
|
||||||
HANDLE_TC_TYPE_POST(tc);
|
HANDLE_TC_TYPE_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TypeList::CheckPure()
|
||||||
|
{
|
||||||
|
if ( pure_type )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! types.empty() && AllMatch(types[0], false) )
|
||||||
|
pure_type = types[0];
|
||||||
|
}
|
||||||
|
|
||||||
bool TypeList::AllMatch(const Type* t, bool is_init) const
|
bool TypeList::AllMatch(const Type* t, bool is_init) const
|
||||||
{
|
{
|
||||||
for ( const auto& type : types )
|
for ( const auto& type : types )
|
||||||
|
|
|
@ -339,6 +339,10 @@ public:
|
||||||
// is not pure or is empty.
|
// is not pure or is empty.
|
||||||
const TypePtr& GetPureType() const { return pure_type; }
|
const TypePtr& GetPureType() const { return pure_type; }
|
||||||
|
|
||||||
|
// Retrospectively instantiates an underlying pure type, if in
|
||||||
|
// fact each element has the same type.
|
||||||
|
void CheckPure();
|
||||||
|
|
||||||
// True if all of the types match t, false otherwise. If
|
// True if all of the types match t, false otherwise. If
|
||||||
// is_init is true, then the matching is done in the context
|
// is_init is true, then the matching is done in the context
|
||||||
// of an initialization.
|
// of an initialization.
|
||||||
|
|
|
@ -377,6 +377,8 @@ TypePtr CPP_TypeInits::BuildTypeList(InitsManager* im, ValElemVec& init_vals, in
|
||||||
while ( iv_it != iv_end )
|
while ( iv_it != iv_end )
|
||||||
tl->Append(im->Types(*(iv_it++)));
|
tl->Append(im->Types(*(iv_it++)));
|
||||||
|
|
||||||
|
tl->CheckPure();
|
||||||
|
|
||||||
return tl;
|
return tl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -412,7 +412,7 @@ static void use_CPP()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( num_used == 0 )
|
if ( num_used == 0 && standalone_activations.empty() )
|
||||||
reporter->FatalError("no C++ functions found to use");
|
reporter->FatalError("no C++ functions found to use");
|
||||||
|
|
||||||
// Now that we've loaded all of the compiled scripts
|
// Now that we've loaded all of the compiled scripts
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue