[Bro-Dev] Use of 'any' type

Johanna Amann johanna at icir.org
Thu Aug 16 13:57:55 PDT 2018


Hi Jim,

On 16 Aug 2018, at 13:40, Jim Mellander wrote:

> It would be most convenient if the 'any' type could defer type 
> checking
> until runtime at the script level.
>
> For instance, if both A & B are defined as type 'any', a compile time 
> error
>
> "illegal comparison (A < B)"
>
> occurs upon encountering a bro statement
>
> if (A < B) do_something();
>
> even if the actual values stored in A & B at runtime are integral 
> types for
> which comparison makes sense.

I think this is a bit hard to do with how things are set up at the 
moment internally - and it also does make type-checking at startup less 
possible-helpful.

However...

>
> If the decision could be made at runtime (which could then potentially
> throw an error), a number of useful generic functions could be created 
> at
> the script level, rather than creating yet-another-bif.  A useful
> yet-another-bif would be 'typeof' to allow varying code paths based on 
> the
> type of value actually stored in 'any'.

This already exists and I think you can actually use it to write code 
like that; you just have to cast your any-type to the correct type 
first. The function you want is type_name; it is e.g. used in 
base/utils/json.bro.

Johanna


More information about the bro-dev mailing list