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