- Expression evaluation results are now highlighted as changed when
they're first added, since they're immediately of interest, unlike
uninitialized variables that're first coming into scope.
Get rid of ExpressionEvaluationWindow.
- When asking to evaluate an expression via the Tools menu, we now
bring up a prompt window the same as the one used to add a watch
expression. This in turn works exactly the same as the latter,
except an additional flag is sent indicating that the expression
in question should not be persisted. As such, the results are
shown in the variables view, with all the capabilities that allows,
but also without the expression following the function as a watch
expression would.
It is possible to set a custom layout on a BBox, which is then applied
to the children excluding the label. However, the label size must still
be used when computing the minimal size of the BBox in that case.
* Factor out the notification sending in a single method
* Tweak the "progress" values so the progress bar goes from 0 to 100% in
order, and only once, during the restart
* Remove one notification that was needlessly sent twice
* Some other small cleanups
Final fix for #8171.
- When retrieving the type to display for a given model node, ask its
underlying value node for its corresponding type rather than relying
on the one initially stored in the model, as the latter can change
as a result of typecasts.
- When creating a derived type, adjust the name accordingly to indicate
the additional qualifiers. Fixes a problem where casted type names would be
displayed as their base type only, even if they included pointers or array
subscripts.
It's ther that the view background color is inherited from the parent.
Fix option popups having a white background eg. in MediaPlayer
preferences.
Thanks to DeadYak for noticing the problem.
In some locales the title is longer than the space there is for it. Make
sure the boxes are wide enough for the title to display completely.
Fixes#11611.
- Add missing if/else keywords.
- Add missing comma that was preventing some keywords from being
recognized properly.
- Add missing handling of condition operator.
SourceLanguage and friends:
- Remove ParseTypeExpression from SourceLanguage, as its functionality
can now properly be subsumed by the general expression parser, and
simply becomes another result type thereof.
CLanguageFamily/CLanguage/CppLanguage:
- Remove IsModifierValid() hook, as this is all now handled internally
in the expression parser.
VariablesView:
- Refactor to handle typecast requests via expression evaluation. Since
this is done asynchronously, rework the logic to handle recognizing
expression evaluation results that correspond to a requested cast,
and handle accordingly.
- Remove handling of the power token, as it's not actually valid C/C++ syntax,
and causes problems when parsing more complex pointer types/dereferences.
SourceLanguage/CLanguageFamily/ExpressionEvaluationJob:
- Add TeamTypeInformation parameter to EvaluateExpression() hook. Adjust
implementing subclasses and callers accordingly.
CLanguageExpressionEvaluator:
- Add class InternalVariableID for representing intermediate variables
generated while parsing an expression.
- When parsing an identifier, if we were passed in a type information object,
then first attempt to resolve the name as a type. If not matched, then fall
through to attempting to match it to a value node as before.
- When parsing an atom, check if it resulted in a type. If it did, and there
still remains more of the expression to parse, then parse the result to see
what value/variable to try to apply the typecast to. If the result is a
primitive, generate an appropriate internal variable + value node child for
it, otherwise use the target variable's child. Then, attempt to typecast it
as requested.
- Simplify _EatToken().
- If the final result of an expression is a type, configure the result object
accordingly.
As a result of all the above, an expression can now resolve to a type, allowing
the evaluator to take over the duties of parsing the desired type for a typecast
request in the variables view, and in addition, expressions themselves can now
contain typecasts, which opens up quite a few new possibilities.
- Properly differentiate the size of a parsed hex constant in order
to return a correspondingly sized primitive, rather than always
returning as 64-bit.
- For simply looking up a type, we need neither the register map, nor
the target interface, as those are only necessary for resolution of
values and/or locations.
- Fix memory leak. A reference to the target interface was acquired in
the type context's ctor, but not correspondingly released in the dtor.
- In addition to a primitive or value node, expressions can potentially
result in types as well. As such, extend ExpressionInfo to be able to
return one, and indicate such a result kind appropriately.
* When the endianness is not intialized, assume B_MEDIA_HOST_ENDIAN.
This is probably what was meant (and this is what Worms Armageddon
means).
* Move creation of the media nodes back to the initialisation instead of
StartPlaying, otherwise an extra node is created each time the sound is
played.
* Use a template to avoid repeating the panning code for each type
* Rearrange the initialization of BSimpleGameSound so the data is only
copied 0 or 1 times (it was copied 2 or 3 times in some cases) between
the passed buffer and the final one,
* Don't execute the panning code on streams with only 1 channel as this
makes no sense and it will read and write outside the buffers
* Abort early in GameSoundBuffer::Play if fIsPlaying is false.
Fix the crashes in Worms Armageddon. Doesn't fix the sounds being mostly
white noise.