function MyCompareObjects (comparisonOperator: DescType;
(CONST) VAR theObject: AEDesc;
(CONST) VAR objOrDescToCompare: AEDesc;
VAR compareResult: boolean): OSErr;
var
theObjectCopy : AEDesc;
objOrDescToCompareCopy : AEDesc;
begin
{ OSL が記述子を再配置可能なブロックにポイントしているため、
まず記述子のコピーを行う。この再配置可能なブロックは、以下の
コードによって移動される可能性がある }
theObjectCopy := theObject;
objOrDescToCompareCopy := objOrDescToCompare;
{ 以下のオブジェクトを処理する必要があるため、
オリジナルの記述子を null 記述子に設定する }
SetToNullDesc (theObject);
SetToNullDesc (objOrDescToCompare);
{ 比較を行うコードはここに置く }
MyCompareObjects := DoTheComparison (comparisonOperator, theObjectCopy,
objOrDescToCompareCopy, compareResult);
{ これらの記述子は定数であると前提されるが、OSL は決して
トークンコールバック関数を呼び出さない。このため、記述子のいずれかが
アプリケーション定義のトークンである場合、それらはここで処理する }
MyDisposeToken (theObjectCopy);
MyDisposeToken (objOrDescToCompareCopy);
end;
|