Skip to content

Commit

Permalink
Used QPI::collection.replace() in more places.
Browse files Browse the repository at this point in the history
  • Loading branch information
CFB-QUBIC committed Apr 15, 2024
1 parent 90dad27 commit 8fb0882
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions src/smart_contracts/Qx.h
Original file line number Diff line number Diff line change
Expand Up @@ -512,19 +512,17 @@ struct QX
if (state._entityOrder.assetName == input.assetName
&& state._entityOrder.issuer == input.issuer)
{
state._entityOrders.remove(state._elementIndex);
state._entityOrder.numberOfShares += input.numberOfShares;
state._entityOrders.add(invocator(), state._entityOrder, -input.price);
state._entityOrders.replace(state._elementIndex, state._entityOrder);

state._elementIndex = state._assetOrders.headIndex(state._issuerAndAssetName, -input.price);
while (true) // Impossible for the corresponding asset order to not exist
{
state._assetOrder = state._assetOrders.element(state._elementIndex);
if (state._assetOrder.entity == invocator())
{
state._assetOrders.remove(state._elementIndex);
state._assetOrder.numberOfShares += input.numberOfShares;
state._assetOrders.add(state._issuerAndAssetName, state._assetOrder, -input.price);
state._assetOrders.replace(state._elementIndex, state._assetOrder);

break;
}
Expand Down Expand Up @@ -672,19 +670,17 @@ struct QX
if (state._entityOrder.assetName == input.assetName
&& state._entityOrder.issuer == input.issuer)
{
state._entityOrders.remove(state._elementIndex);
state._entityOrder.numberOfShares += input.numberOfShares;
state._entityOrders.add(invocator(), state._entityOrder, input.price);
state._entityOrders.replace(state._elementIndex, state._entityOrder);

state._elementIndex = state._assetOrders.tailIndex(state._issuerAndAssetName, input.price);
while (true) // Impossible for the corresponding asset order to not exist
{
state._assetOrder = state._assetOrders.element(state._elementIndex);
if (state._assetOrder.entity == invocator())
{
state._assetOrders.remove(state._elementIndex);
state._assetOrder.numberOfShares += input.numberOfShares;
state._assetOrders.add(state._issuerAndAssetName, state._assetOrder, input.price);
state._assetOrders.replace(state._elementIndex, state._assetOrder);

break;
}
Expand Down Expand Up @@ -839,11 +835,14 @@ struct QX
}
else
{
state._entityOrders.remove(state._elementIndex);
state._entityOrder.numberOfShares -= input.numberOfShares;
if (state._entityOrder.numberOfShares > 0)
{
state._entityOrders.add(invocator(), state._entityOrder, -input.price);
state._entityOrders.replace(state._elementIndex, state._entityOrder);
}
else
{
state._entityOrders.remove(state._elementIndex);
}

state._elementIndex = state._assetOrders.headIndex(state._issuerAndAssetName, -input.price);
Expand All @@ -852,11 +851,14 @@ struct QX
state._assetOrder = state._assetOrders.element(state._elementIndex);
if (state._assetOrder.entity == invocator())
{
state._assetOrders.remove(state._elementIndex);
state._assetOrder.numberOfShares -= input.numberOfShares;
if (state._assetOrder.numberOfShares > 0)
{
state._assetOrders.add(state._issuerAndAssetName, state._assetOrder, -input.price);
state._assetOrders.replace(state._elementIndex, state._assetOrder);
}
else
{
state._assetOrders.remove(state._elementIndex);
}

break;
Expand Down Expand Up @@ -920,11 +922,14 @@ struct QX
}
else
{
state._entityOrders.remove(state._elementIndex);
state._entityOrder.numberOfShares -= input.numberOfShares;
if (state._entityOrder.numberOfShares > 0)
{
state._entityOrders.add(invocator(), state._entityOrder, input.price);
state._entityOrders.replace(state._elementIndex, state._entityOrder);
}
else
{
state._entityOrders.remove(state._elementIndex);
}

state._elementIndex = state._assetOrders.tailIndex(state._issuerAndAssetName, input.price);
Expand All @@ -933,11 +938,14 @@ struct QX
state._assetOrder = state._assetOrders.element(state._elementIndex);
if (state._assetOrder.entity == invocator())
{
state._assetOrders.remove(state._elementIndex);
state._assetOrder.numberOfShares -= input.numberOfShares;
if (state._assetOrder.numberOfShares > 0)
{
state._assetOrders.add(state._issuerAndAssetName, state._assetOrder, input.price);
state._assetOrders.replace(state._elementIndex, state._assetOrder);
}
else
{
state._assetOrders.remove(state._elementIndex);
}

break;
Expand Down

0 comments on commit 8fb0882

Please sign in to comment.