Files
codeql/cpp/ql/test/library-tests/qlcfg/pointer_to_member.cpp
Jonas Jensen 26f32f0d6d C++: Initial version of CFG.qll
This implements calculation of the control-flow graph in QL. The new
code is not enabled yet as we'll need more extractor changes first.

The `SyntheticDestructorCalls.qll` file is a temporary solution that can
be removed when the extractor produces this information directly.
2019-01-04 13:34:36 +01:00

31 lines
587 B
C++

struct PM {
int x1;
int x2;
void f1();
void f2();
PM clone();
};
int PM::* getDataMemberPointer(bool);
typedef void (PM::*pmVoidVoid)();
pmVoidVoid getFunctionMemberPointer(bool);
int usePM(int PM::* pm) {
int acc;
PM obj;
// Needs fix for extractor bug CPP-313
//acc += obj.clone() .* getDataMemberPointer(true);
//acc += (&obj) ->* getDataMemberPointer(true);
(obj.clone() .* getFunctionMemberPointer(false))();
((&obj) ->* getFunctionMemberPointer(true))();
acc += obj .* pm;
acc += obj.clone() .* pm;
return acc;
}