[Bro-Dev] Use of 'any' type

Jim Mellander jmellander at lbl.gov
Thu Aug 16 15:02:46 PDT 2018


Actually, the 'as' operator is useful, since it appears that 'any' can
currently only be cast into a string otherwise....

On Thu, Aug 16, 2018 at 2:58 PM, Jon Siwek <jsiwek at corelight.com> wrote:

> In the master branch, there are also type checking/casting 'is' and
> 'as' operators [1] and type-based switch statement [2] that may be be
> useful.
>
> - Jon
>
> [1] https://www.bro.org/sphinx-git/script-reference/operators.html
> [2] https://www.bro.org/sphinx-git/script-reference/
> statements.html#keyword-switch
>
> On Thu, Aug 16, 2018 at 4:24 PM Jim Mellander <jmellander at lbl.gov> wrote:
> >
> > Thanks, Johanna - I think type_name() may suffice for the purposes I am
> envisioning.
> >
> > On Thu, Aug 16, 2018 at 1:57 PM, Johanna Amann <johanna at icir.org> wrote:
> >>
> >> 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
> >
> >
> > _______________________________________________
> > bro-dev mailing list
> > bro-dev at bro.org
> > http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.icsi.berkeley.edu/pipermail/bro-dev/attachments/20180816/aa84d49a/attachment.html 


More information about the bro-dev mailing list