1226 {
1229
1230 rawstr <<
"shape=record";
1231
1233 {
1235 if (SVFUtil::isa<AddrStmt>(
edge))
1236 {
1237 rawstr <<
",color=green";
1238 }
1239 else if (SVFUtil::isa<CopyStmt>(
edge))
1240 {
1241 rawstr <<
",color=black";
1242 }
1243 else if (SVFUtil::isa<RetPE>(
edge))
1244 {
1245 rawstr <<
",color=black,style=dotted";
1246 }
1247 else if (SVFUtil::isa<GepStmt>(
edge))
1248 {
1249 rawstr <<
",color=\"purple:purple\"";
1250 }
1251 else if (SVFUtil::isa<StoreStmt>(
edge))
1252 {
1254 }
1255 else if (SVFUtil::isa<LoadStmt>(
edge))
1256 {
1258 }
1259 else
1260 {
1261 assert(0 &&
"No such kind edge!!");
1262 }
1264 }
1265 else if (SVFUtil::isa<CmpVFGNode>(node))
1266 {
1268 }
1269 else if (SVFUtil::isa<BinaryOPVFGNode>(node))
1270 {
1272 }
1273 else if (SVFUtil::isa<UnaryOPVFGNode>(node))
1274 {
1276 }
1277 else if(SVFUtil::isa<PHIVFGNode>(node))
1278 {
1279 rawstr <<
",color=black";
1280 }
1281 else if(SVFUtil::isa<NullPtrVFGNode>(node))
1282 {
1284 }
1285 else if(SVFUtil::isa<FormalParmVFGNode>(node))
1286 {
1287 rawstr <<
",color=yellow,penwidth=2";
1288 }
1289 else if(SVFUtil::isa<ActualParmVFGNode>(node))
1290 {
1291 rawstr <<
",color=yellow,penwidth=2";
1292 }
1293 else if (SVFUtil::isa<ActualRetVFGNode>(node))
1294 {
1295 rawstr <<
",color=yellow,penwidth=2";
1296 }
1297 else if (SVFUtil::isa<FormalRetVFGNode>(node))
1298 {
1299 rawstr <<
",color=yellow,penwidth=2";
1300 }
1301 else if (SVFUtil::isa<MRSVFGNode>(node))
1302 {
1303 rawstr <<
",color=orange,penwidth=2";
1304 }
1305 else if (SVFUtil::isa<BranchVFGNode>(node))
1306 {
1307 rawstr <<
",color=gold,penwidth=2";
1308 }
1309 else
1310 assert(
false &&
"no such kind of node!!");
1311
1313 }