123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * @file llsaleinfo.h
- * @brief LLSaleInfo class header file.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
- #ifndef LL_LLSALEINFO_H
- #define LL_LLSALEINFO_H
- #include "llpermissionsflags.h"
- #include "llpreprocessor.h"
- #include "llsd.h"
- #include "llxmlnode.h"
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Class LLSaleInfo
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // L$ default price for objects
- constexpr S32 DEFAULT_PRICE = 10;
- class LLMessageSystem;
- class LLSaleInfo
- {
- protected:
- LOG_CLASS(LLSaleInfo);
- public:
- // Use this to avoid temporary object creation
- static const LLSaleInfo DEFAULT;
- enum EForSale
- {
- // Item is not to be considered for transactions
- FS_NOT = 0,
- // The origional is on sale
- FS_ORIGINAL = 1,
- // A copy is for sale
- FS_COPY = 2,
- // Valid only for tasks, the inventory is for sale at the price in this
- // structure.
- FS_CONTENTS = 3,
- FS_COUNT
- };
- public:
- // Default constructor is fine usually
- LLSaleInfo();
- LLSaleInfo(EForSale sale_type, S32 sale_price);
- // Accessors
- LL_INLINE bool isForSale() const { return mSaleType != FS_NOT; }
- LL_INLINE EForSale getSaleType() const { return mSaleType; }
- LL_INLINE S32 getSalePrice() const { return mSalePrice; }
- U32 getCRC32() const;
- // Mutators
- LL_INLINE void setSaleType(EForSale type) { mSaleType = type; }
- void setSalePrice(S32 price);
- #if 0
- LL_INLINE void setNextOwnerPermMask(U32 mask) { mNextOwnerPermMask = mask; }
- #endif
- bool exportLegacyStream(std::ostream& output_stream) const;
- LLSD asLLSD() const;
- LL_INLINE operator LLSD() const { return asLLSD(); }
- bool fromLLSD(const LLSD& sd, bool& has_perm_mask, U32& perm_mask);
- bool importLegacyStream(std::istream& input_stream, bool& has_perm_mask,
- U32& perm_mask);
- LLSD packMessage() const;
- void unpackMessage(LLSD sales);
- // Message serialization
- void packMessage(LLMessageSystem* msg) const;
- void unpackMessage(LLMessageSystem* msg, const char* block);
- void unpackMultiMessage(LLMessageSystem* msg, const char* block,
- S32 block_num);
- // Static functionality to determine the "for sale" status.
- static EForSale lookup(const char* name);
- static const char* lookup(EForSale type);
- // Allows accumulation of sale info. The price of each is added, conflict
- // in sale type results in FS_NOT, and the permissions are tightened.
- void accumulate(const LLSaleInfo& sale_info);
- bool operator==(const LLSaleInfo& rhs) const;
- bool operator!=(const LLSaleInfo& rhs) const;
- protected:
- EForSale mSaleType;
- S32 mSalePrice;
- };
- // These functions convert between structured data and sale info as appropriate
- // for serialization.
- LLSD ll_create_sd_from_sale_info(const LLSaleInfo& sale);
- LLSaleInfo ll_sale_info_from_sd(const LLSD& sd);
- #endif // LL_LLSALEINFO_H
|