dynamic_cast can return a null pointer if it was able to upcast.
From: Erik Hovland <erik@hovland.org>
---
libs/libmythtv/diseqcsettings.cpp | 83 +++++++++++++++++++++++++------------
1 files changed, 55 insertions(+), 28 deletions(-)
diff --git a/libs/libmythtv/diseqcsettings.cpp b/libs/libmythtv/diseqcsettings.cpp
index 89fdaed..5e036b1 100644
a
|
b
|
bool convert_diseqc_db(void)
|
1398 | 1398 | root = DiSEqCDevDevice::CreateByType( |
1399 | 1399 | tree, DiSEqCDevDevice::kTypeSwitch); |
1400 | 1400 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1401 | | sw->SetType(DiSEqCDevSwitch::kTypeTone); |
1402 | | sw->SetNumPorts(2); |
1403 | | add_lnbs = 2; |
| 1401 | if (sw) |
| 1402 | { |
| 1403 | sw->SetType(DiSEqCDevSwitch::kTypeTone); |
| 1404 | sw->SetNumPorts(2); |
| 1405 | add_lnbs = 2; |
| 1406 | } |
1404 | 1407 | break; |
1405 | 1408 | } |
1406 | 1409 | |
… |
… |
bool convert_diseqc_db(void)
|
1411 | 1414 | root = DiSEqCDevDevice::CreateByType( |
1412 | 1415 | tree, DiSEqCDevDevice::kTypeSwitch); |
1413 | 1416 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1414 | | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted); |
1415 | | sw->SetNumPorts(2); |
1416 | | add_lnbs = 2; |
| 1417 | if (sw) |
| 1418 | { |
| 1419 | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted); |
| 1420 | sw->SetNumPorts(2); |
| 1421 | add_lnbs = 2; |
| 1422 | } |
1417 | 1423 | break; |
1418 | 1424 | } |
1419 | 1425 | |
… |
… |
bool convert_diseqc_db(void)
|
1424 | 1430 | root = DiSEqCDevDevice::CreateByType( |
1425 | 1431 | tree, DiSEqCDevDevice::kTypeSwitch); |
1426 | 1432 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1427 | | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted); |
1428 | | sw->SetNumPorts(4); |
1429 | | add_lnbs = 4; |
| 1433 | if (sw) |
| 1434 | { |
| 1435 | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted); |
| 1436 | sw->SetNumPorts(4); |
| 1437 | add_lnbs = 4; |
| 1438 | } |
1430 | 1439 | break; |
1431 | 1440 | } |
1432 | 1441 | |
… |
… |
bool convert_diseqc_db(void)
|
1436 | 1445 | root = DiSEqCDevDevice::CreateByType( |
1437 | 1446 | tree, DiSEqCDevDevice::kTypeRotor); |
1438 | 1447 | DiSEqCDevRotor *rotor = dynamic_cast<DiSEqCDevRotor*>(root); |
1439 | | rotor->SetType(DiSEqCDevRotor::kTypeDiSEqC_1_2); |
1440 | | add_lnbs = 1; |
| 1448 | if (rotor) |
| 1449 | { |
| 1450 | rotor->SetType(DiSEqCDevRotor::kTypeDiSEqC_1_2); |
| 1451 | add_lnbs = 1; |
| 1452 | } |
1441 | 1453 | break; |
1442 | 1454 | } |
1443 | 1455 | |
… |
… |
bool convert_diseqc_db(void)
|
1447 | 1459 | root = DiSEqCDevDevice::CreateByType( |
1448 | 1460 | tree, DiSEqCDevDevice::kTypeRotor); |
1449 | 1461 | DiSEqCDevRotor *rotor = dynamic_cast<DiSEqCDevRotor*>(root); |
1450 | | rotor->SetType(DiSEqCDevRotor::kTypeDiSEqC_1_3); |
1451 | | add_lnbs = 1; |
| 1462 | if (rotor) |
| 1463 | { |
| 1464 | rotor->SetType(DiSEqCDevRotor::kTypeDiSEqC_1_3); |
| 1465 | add_lnbs = 1; |
| 1466 | } |
1452 | 1467 | break; |
1453 | 1468 | } |
1454 | 1469 | |
… |
… |
bool convert_diseqc_db(void)
|
1458 | 1473 | root = DiSEqCDevDevice::CreateByType( |
1459 | 1474 | tree, DiSEqCDevDevice::kTypeSwitch); |
1460 | 1475 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1461 | | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCUncommitted); |
1462 | | sw->SetNumPorts(10); |
1463 | | add_lnbs = 10; |
| 1476 | if (sw) |
| 1477 | { |
| 1478 | sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCUncommitted); |
| 1479 | sw->SetNumPorts(10); |
| 1480 | add_lnbs = 10; |
| 1481 | } |
1464 | 1482 | break; |
1465 | 1483 | } |
1466 | 1484 | |
… |
… |
bool convert_diseqc_db(void)
|
1470 | 1488 | root = DiSEqCDevDevice::CreateByType( |
1471 | 1489 | tree, DiSEqCDevDevice::kTypeSwitch); |
1472 | 1490 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1473 | | sw->SetType(DiSEqCDevSwitch::kTypeLegacySW21); |
1474 | | sw->SetNumPorts(2); |
1475 | | add_lnbs = 2; |
1476 | | lnb_type = DiSEqCDevLNB::kTypeFixed; |
| 1491 | if (sw) |
| 1492 | { |
| 1493 | sw->SetType(DiSEqCDevSwitch::kTypeLegacySW21); |
| 1494 | sw->SetNumPorts(2); |
| 1495 | add_lnbs = 2; |
| 1496 | lnb_type = DiSEqCDevLNB::kTypeFixed; |
| 1497 | } |
1477 | 1498 | break; |
1478 | 1499 | } |
1479 | 1500 | |
… |
… |
bool convert_diseqc_db(void)
|
1483 | 1504 | root = DiSEqCDevDevice::CreateByType( |
1484 | 1505 | tree, DiSEqCDevDevice::kTypeSwitch); |
1485 | 1506 | DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root); |
1486 | | sw->SetType(DiSEqCDevSwitch::kTypeLegacySW64); |
1487 | | sw->SetNumPorts(3); |
1488 | | add_lnbs = 3; |
1489 | | lnb_type = DiSEqCDevLNB::kTypeFixed; |
| 1507 | if (sw) |
| 1508 | { |
| 1509 | sw->SetType(DiSEqCDevSwitch::kTypeLegacySW64); |
| 1510 | sw->SetNumPorts(3); |
| 1511 | add_lnbs = 3; |
| 1512 | lnb_type = DiSEqCDevLNB::kTypeFixed; |
| 1513 | } |
1490 | 1514 | break; |
1491 | 1515 | } |
1492 | 1516 | |
… |
… |
bool convert_diseqc_db(void)
|
1509 | 1533 | DiSEqCDevLNB *lnb = dynamic_cast<DiSEqCDevLNB*> |
1510 | 1534 | (DiSEqCDevDevice::CreateByType( |
1511 | 1535 | tree, DiSEqCDevDevice::kTypeLNB)); |
1512 | | lnb->SetType(lnb_type); |
1513 | | lnb->SetDescription(QString("LNB #%1").arg(i+1)); |
1514 | | if (!root->SetChild(i, lnb)) |
1515 | | delete lnb; |
| 1536 | if (lnb) |
| 1537 | { |
| 1538 | lnb->SetType(lnb_type); |
| 1539 | lnb->SetDescription(QString("LNB #%1").arg(i+1)); |
| 1540 | if (!root->SetChild(i, lnb)) |
| 1541 | delete lnb; |
| 1542 | } |
1516 | 1543 | } |
1517 | 1544 | |
1518 | 1545 | // save the tree to get real device ids |