We use the following code to get the edge interval and whether the curve and the loop lying on the specified face have the same direction (sense).
const ON_BrepEdge * prnEdge = ...;
const ON_Curve* prnCurve = ON_Curve::Cast(prnEdge);
ON_Interval rnCurveInterval = prnCurve>Domain();
rnCurveInterval.MakeIncreasing();
const ON_BrepTrim * prnTrim = prnEdge>Trim(0);
bCurveSenseInFace = !(prnTrim>m_bRev3d);

Would prnCurve>Domain() return the edge interval? (A curve can be used by multiple edges.)

rnCurveInterval.MakeIncreasing(). Does it simply swap the interval to make the interval increasing? (If so, it means that MakeIncreasing() actually “reverse” the curve and the bCurveSenseInFace would be wrong.)

bCurveSenseInFace = !(prnTrim>m_bRev3d). Is it the correct method to check whether the curve and the loop lying on the specified face have the same direction (sense).
Many thanks.