バージョン 4.0 のコードを 4.1 に対応させる方法
1.SFU??? で始まる SophiaFramework 2.x, SophiaFramework 3.x に関するクラスが利用されていないことを確認する。
※利用されている場合は、先にバージョン3.0 のコードを 4.0 に対応 させておく必要があります。
2.IndexOf() 関数を利用している個所を FirstIndexOf() 関数に置き換える。
3.引数を指定せずに利用している SFXArray , SFXStack , SFXList クラスの GetIterator() 関数と GetEnumerator() 関数を、GetFirstIterator() 関数と GetFirstEnumerator() 関数に置き換える。
4.コンパイルを行い、エラーを確認する。
エラーが発生しなければバージョン 4.1 への対応は完了です。
5.手順4でクラス、マクロや関数が見つからない旨のエラーが発生する場合は、下記表の非推奨 API を利用していないか確認する。
6.すべて修正できたら手順4へ
さらに、バージョン 4.1 に最適化するためには、SFXHashmap クラスを利用している個所を確認します。
バージョン 4.1 ではキーイテレータと値イテレータが搭載されましたので、従来独自に管理しなければいけなかった値オブジェクトのリストをこれらのイテレータを利用して管理できます。
非推奨 API 一覧
/*** クラス ***/ ・SFRBrewTextControl クラスは SFREditboxControl クラスに置き換え /*** マクロ ***/ #define alignof(type) align64of(type) #define clusterof(type) cluster64of(type) macro TYPE_<コンポーネント名> => TYPE_SFR<コンポーネント名> macro ATTRIBUTE_<コンポーネント名> => ATTRIBUTE_SFR<コンポーネント名> macro BEHAVIOR_<コンポーネント名> => BEHAVIOR_SFR<コンポーネント名> ・SFRBREWTEXTCONTROL に関するマクロは、すべて SFREDITBOXCONTROL に置き換え /*** 関数 ***/ ・以下の関数は非推奨 API です。それぞれの実装を参考に置換してください。 /*** SFXBuffer ***/ inline SFXBuffer Slice(UInt32 begin, UInt32 end) const { SFXBuffer result(*this); result.Slice(begin, end); return result; } /*** SFXRingBuffer ***/ inline VoidPtr LockWrite(UInt32Ptr size = null) { return GetWritableBuffer(size); } inline VoidPtr LockRead(UInt32Ptr size = null) { return const_cast<VoidPtr>(GetReadableBuffer(size)); } inline SFCError UnlockWrite(UInt32 size) { return SeekWrite(size); } inline SFCError UnlockRead(UInt32 size) { return SeekRead(size); } /*** SFXAscii ***/ inline static AChar ToUpper(AChar param) { return AsUpper(param); } inline static WChar ToUpper(WChar param) { return AsUpper(param); } inline static AChar ToLower(AChar param) { return AsLower(param); } inline static WChar ToLower(WChar param) { return AsLower(param); } /*** SFXAnsiString ***/ inline SInt32 ToSInt32(SInt32 substitute = 0) const { return AsSInt32(substitute); } inline UInt32 ToUInt32(UInt32 substitute = 0) const { return AsUInt32(substitute); } /*inline Void Rotate(SInt32 shift) { => removed }*/ /*** SFXWideString ***/ inline SInt32 ToSInt32(SInt32 substitute = 0) const { return AsSInt32(substitute); } inline UInt32 ToUInt32(UInt32 substitute = 0) const { return AsUInt32(substitute); } /*inline Void Rotate(SInt32 shift) { => removed }*/ /*** SFXShiftJIS ***/ inline static UInt16 WCharToUInt16(WChar param) { return AsUInt16(param); } inline static UInt16 UInt16ToWChar(WChar param) { return AsWChar(param); } /*** SFXRGBColor ***/ inline RGBVAL ToRGBVAL(Void) const { return AsRGBVAL(); } /*** SFXGraphics ***/ inline SFBGraphicsSmpConstRef GetGraphics(Void) const { return GetSFBGraphics(); } inline SFBDisplaySmpConstRef GetDisplay(Void) const { return GetSFBDisplay(); } /*** SFXDirectory ***/ inline static SFCError GetTemporaryPath(SFXPathConstRef path, SFXAnsiStringConstRef prefix, SFXAnsiStringConstRef suffix, SFXPathPtr result) { return GetUniquePath(path, prefix, suffix, result); } /*** SFXFile ***/ inline static SFCError GetTemporaryPath(SFXPathConstRef path, SFXAnsiStringConstRef prefix, SFXAnsiStringConstRef suffix, SFXPathPtr result) { return GetUniquePath(path, prefix, suffix + ".tmp", result); } /*** SFXConfig ***/ inline SFCError Load(SFXAnsiStringConstRef file) { return Load(SFXPath(file)); } inline SFCError Save(SFXAnsiStringConstRef file) { return Save(SFXPath(file)); } /*inline SFCError GetEntry(SInt32 index, UInt16Ptr tag, VoidConstHandle value, UInt16Ptr length) const { => removed }*/ /*** SFXDate ***/ inline UInt32 ToUInt32(Void) const { return AsUInt32(); } inline JulianType ToJulianType(Void) const { return AsJulianType(); } /*** SFXDateDuration ***/ inline SInt32 ToSInt32(Void) const { return static_cast<SInt32>(AsSInt64()); }