42    for (
auto& tx : lpAccepted->txs)
 
   44        if (!tx.first || !tx.second ||
 
   45            !tx.first->isFieldPresent(sfTransactionType))
 
   49        uint16_t tt = tx.first->getFieldU16(sfTransactionType);
 
   53            case ttOFFER_CREATE: {
 
   54                if (tx.first->isFieldPresent(sfOfferSequence))
 
   55                    offerCancel = tx.first->getFieldU32(sfOfferSequence);
 
   64        for (
auto const& node : tx.second->getFieldArray(sfAffectedNodes))
 
   66            SField const& metaType = node.getFName();
 
   67            uint16_t nodeType = node.getFieldU16(sfLedgerEntryType);
 
   71            if (nodeType != ltOFFER || metaType == sfCreatedNode)
 
   77            if (!node.isFieldPresent(sfFinalFields) ||
 
   78                !node.isFieldPresent(sfPreviousFields))
 
   81            auto const& ffBase = node.peekAtField(sfFinalFields);
 
   82            auto const& finalFields = ffBase.template downcast<STObject>();
 
   83            auto const& pfBase = node.peekAtField(sfPreviousFields);
 
   84            auto const& previousFields = pfBase.template downcast<STObject>();
 
   87            if (!finalFields.isFieldPresent(sfTakerGets) ||
 
   88                !finalFields.isFieldPresent(sfTakerPays) ||
 
   89                !previousFields.isFieldPresent(sfTakerGets) ||
 
   90                !previousFields.isFieldPresent(sfTakerPays))
 
   94            if (metaType == sfDeletedNode && offerCancel &&
 
   95                finalFields.getFieldU32(sfSequence) == *offerCancel)
 
  100            STAmount deltaGets = finalFields.getFieldAmount(sfTakerGets) -
 
  101                previousFields.getFieldAmount(sfTakerGets);
 
  102            STAmount deltaPays = finalFields.getFieldAmount(sfTakerPays) -
 
  103                previousFields.getFieldAmount(sfTakerPays);
 
  109                isXRP(deltaGets) ? true : (
isXRP(deltaPays) ? false : (g < p));
 
  111            STAmount first = noswap ? deltaGets : deltaPays;
 
  112            STAmount second = noswap ? deltaPays : deltaGets;
 
  115            if (second == beast::zero)
 
  120            if (first < beast::zero)
 
  123            if (second < beast::zero)
 
  136            if (tally.find(key) == tally.end())
 
  148                auto& entry = tally[key];
 
  166    jvObj[jss::type] = 
"bookChanges";
 
  169    jvObj[jss::validated] = lpAccepted->info().validated;
 
  170    jvObj[jss::ledger_index] = lpAccepted->info().seq;
 
  171    jvObj[jss::ledger_hash] = 
to_string(lpAccepted->info().hash);
 
  173        lpAccepted->info().closeTime.time_since_epoch().count());
 
  177    for (
auto const& entry : tally)
 
  184        inner[jss::currency_a] =
 
  186        inner[jss::currency_b] =
 
  189        inner[jss::volume_a] =
 
  191        inner[jss::volume_b] =