32 #ifndef _QORE_QOREMULTIPLYEQUALSOPERATORNODE_H
33 #define _QORE_QOREMULTIPLYEQUALSOPERATORNODE_H
35 class QoreMultiplyEqualsOperatorNode :
public QoreBinaryLValueOperatorNode {
38 DLLLOCAL
virtual int parseInitImpl(
QoreValue& val, QoreParseContext& parse_context);
43 DLLLOCAL QoreMultiplyEqualsOperatorNode(
const QoreProgramLocation* loc,
QoreValue left,
QoreValue right)
44 : QoreBinaryLValueOperatorNode(loc, left, right) {
47 DLLLOCAL
virtual QoreOperatorNode* copyBackground(
ExceptionSink *xsink)
const {
48 return copyBackgroundExplicit<QoreMultiplyEqualsOperatorNode>(xsink);
51 DLLLOCAL
int parseInitIntern(
const char* name, QoreParseContext& parse_context) {
52 assert(!parse_context.typeInfo);
55 QoreParseContextFlagHelper fh(parse_context);
56 fh.setFlags(PF_FOR_ASSIGNMENT);
57 err = parse_init_value(left, parse_context);
58 ti = parse_context.typeInfo;
61 err = checkLValue(left, parse_context.pflag);
64 parse_context.typeInfo =
nullptr;
65 if (parse_init_value(right, parse_context) && !err) {
68 const QoreTypeInfo* rightTypeInfo = parse_context.typeInfo;
70 if (!QoreTypeInfo::isType(ti,
NT_NUMBER)) {
71 if (QoreTypeInfo::isType(rightTypeInfo,
NT_NUMBER)) {
72 if (check_lvalue_number(loc, ti, name) && !err) {
76 }
else if (!QoreTypeInfo::isType(ti,
NT_FLOAT)) {
77 if (QoreTypeInfo::isType(rightTypeInfo,
NT_FLOAT)) {
78 if (check_lvalue_float(loc, ti, name) && !err) {
82 }
else if (QoreTypeInfo::returnsSingle(ti)) {
83 if (check_lvalue_int(loc, ti, name) && !err) {
93 parse_context.typeInfo = ti;
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:48
const qore_type_t NT_NUMBER
type value for QoreNumberNode
Definition: node_types.h:53
const qore_type_t NT_FLOAT
type value for floating-point values (QoreValue only)
Definition: node_types.h:44
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:275