32 #ifndef _QORE_QOREMULTIPLYEQUALSOPERATORNODE_H
33 #define _QORE_QOREMULTIPLYEQUALSOPERATORNODE_H
35 class QoreMultiplyEqualsOperatorNode :
public QoreBinaryLValueOperatorNode {
38 DLLLOCAL
virtual void parseInitImpl(
QoreValue& val, LocalVar* oflag,
int pflag,
int& lvids,
const QoreTypeInfo*& typeInfo);
43 DLLLOCAL QoreMultiplyEqualsOperatorNode(
const QoreProgramLocation* loc,
QoreValue left,
QoreValue right) : QoreBinaryLValueOperatorNode(loc, left, right) {
46 DLLLOCAL
virtual QoreOperatorNode* copyBackground(
ExceptionSink *xsink)
const {
47 return copyBackgroundExplicit<QoreMultiplyEqualsOperatorNode>(xsink);
50 DLLLOCAL
void parseInitIntern(
const char *name, LocalVar *oflag,
int pflag,
int &lvids,
const QoreTypeInfo *&typeInfo) {
51 parse_init_value(left, oflag, pflag | PF_FOR_ASSIGNMENT, lvids, ti);
52 checkLValue(left, pflag);
54 const QoreTypeInfo *rightTypeInfo = 0;
55 parse_init_value(right, oflag, pflag, lvids, rightTypeInfo);
57 if (!QoreTypeInfo::isType(ti,
NT_NUMBER)) {
58 if (QoreTypeInfo::isType(rightTypeInfo,
NT_NUMBER)) {
59 check_lvalue_number(loc, ti, name);
62 else if (!QoreTypeInfo::isType(ti,
NT_FLOAT)) {
63 if (QoreTypeInfo::isType(rightTypeInfo,
NT_FLOAT)) {
64 check_lvalue_float(loc, ti, name);
67 else if (QoreTypeInfo::returnsSingle(ti)) {
68 check_lvalue_int(loc, ti, name);