00001
00032 #ifndef LL_LLWEARABLELIST_H
00033 #define LL_LLWEARABLELIST_H
00034
00035 #include "llwearable.h"
00036 #include "llskiplist.h"
00037 #include "lluuid.h"
00038 #include "llassetstorage.h"
00039
00040 class LLWearableList
00041 {
00042 public:
00043 LLWearableList() {}
00044 ~LLWearableList();
00045
00046 S32 getLength() { return mList.getLength(); }
00047 const LLWearable* getFirst() { return mList.getFirstData(); }
00048 const LLWearable* getNext() { return mList.getNextData(); }
00049
00050 void getAsset(
00051 const LLAssetID& assetID,
00052 const LLString& wearable_name,
00053 LLAssetType::EType asset_type,
00054 void(*asset_arrived_callback)(LLWearable*, void* userdata),
00055 void* userdata );
00056
00057 LLWearable* createLegacyWearableFromAvatar( EWearableType type );
00058
00059 LLWearable* createWearableMatchedToInventoryItem( LLWearable* old_wearable, LLViewerInventoryItem* item );
00060 LLWearable* createCopyFromAvatar( LLWearable* old_wearable, const std::string& new_name = std::string() );
00061 LLWearable* createCopy( LLWearable* old_wearable );
00062 LLWearable* createNewWearable( EWearableType type );
00063
00064
00065 static void processGetAssetReply(const char* filename, const LLAssetID& assetID, void* user_data, S32 status, LLExtStat ext_status);
00066
00067 protected:
00068 LLPtrSkipMap< const LLUUID, LLWearable* > mList;
00069 };
00070
00071 extern LLWearableList gWearableList;
00072
00073 #endif // LL_LLWEARABLELIST_H