- Main Page
- Related Pages
- Modules
- Classes
- Files

# ClassCapabilities.h

Go to the documentation of this file.

    00001 #ifndef _CLASSCAPABILITIES_H_
    00002 #define _CLASSCAPABILITIES_H_
    00003
    00004 //
    00005 // Copyright (C) 2004-2006  Autodesk, Inc.
    00006 //
    00007 // This library is free software; you can redistribute it and/or
    00008 // modify it under the terms of version 2.1 of the GNU Lesser
    00009 // General Public License as published by the Free Software Foundation.
    00010 //
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014 // Lesser General Public License for more details.
    00015 //
    00016 // You should have received a copy of the GNU Lesser General Public
    00017 // License along with this library; if not, write to the Free Software
    00018 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00019 //
    00020
    00021 #ifdef _WIN32
    00022 #pragma once
    00023 #endif
    00024
    00025 #include <FdoStd.h>
    00026 #include <Fdo/Schema/SchemaElement.h>
    00027 #include <Fdo/Commands/Locking/LockType.h>
    00028
    00029 class FdoClassDefinition;
    00030
    00031 /// \brief
    00032 /// The FdoClassCapabilites class describes various capabilities
    00033 /// for a particular FDO Class Definition and an FDO Provider datastore.
    00034 class FdoClassCapabilities :
    00035     public FdoIDisposable
    00036 {
    00037 protected:
    00038 /// \cond DOXYGEN-IGNORE
    00039     FdoClassCapabilities();
    00040
    00041     FdoClassCapabilities(FdoClassDefinition& parent);
    00042
    00043     virtual ~FdoClassCapabilities();
    00044
    00045     virtual void Dispose();
    00046 /// \endcond
    00047
    00048 public:
    00049     /// \brief
    00050     /// Gets the locking support capability.
    00051     ///
    00052     /// \return
    00053     /// Returns true if objects of this class can be locked
    00054     ///
    00055     FDO_API FdoBoolean SupportsLocking();
    00056
    00057     /// \brief
    00058     /// Gets an array of the FdoLockType values supported by the feature provider.
    00059     ///
    00060     /// \param size
    00061     /// Output the number of lock types
    00062     ///
    00063     /// \return
    00064     /// Returns the list of lock types
    00065     ///
    00066     FDO_API FdoLockType* GetLockTypes(FdoInt32& size);
    00067
    00068     /// \brief
    00069     /// Gets the long transaction support capability.
    00070     ///
    00071     /// \return
    00072     /// Returns true if long transactions can be created on objects
    00073     /// of this class
    00074     ///
    00075     FDO_API FdoBoolean SupportsLongTransactions();
    00076
    00077     /// \brief
    00078     /// Gets the parent of this Class Capabilites object.
    00079     ///
    00080     /// \return
    00081     /// Returns FdoClassDefinition
    00082     ///
    00083     FDO_API FdoClassDefinition* GetParent();
    00084
    00085     /// \brief
    00086     /// Constructs an FdoClassCapabilities instance. This function
    00087     /// should only be called from an FDO Provider.
    00088     ///
    00089     /// \param parent
    00090     /// Input The Fdo Class Definition that owns these
    00091     /// capabilities.
    00092     ///
    00093     /// \return
    00094     /// Returns FdoClassCapabilities
    00095     ///
    00096     FDO_API static FdoClassCapabilities* Create(FdoClassDefinition& parent);
    00097
    00098     /// \brief
    00099     /// Sets the locking support capability.
    00100     ///
    00101     /// \param value
    00102     /// Input The locking support capability
    00103     ///
    00104     FDO_API void SetSupportsLocking(FdoBoolean value);
    00105
    00106     /// \brief
    00107     /// Sets the locking types support capability. This function should only
    00108     /// be called from an FDO Provider.
    00109     ///
    00110     /// \param types
    00111     /// The supported array of lock types
    00112     /// \param size
    00113     /// The number of lock types
    00114     ///
    00115     FDO_API void SetLockTypes(const FdoLockType* types, FdoInt32 size);
    00116
    00117     /// \brief
    00118     /// Sets the long transaction support capability.
    00119     ///
    00120     /// \param value
    00121     /// Input The long transaction capability
    00122     ///
    00123     FDO_API void SetSupportsLongTransactions(FdoBoolean value);
    00124
    00125     /// \brief
    00126     /// Returns true if the class supports write.
    00127     ///
    00128     FDO_API FdoBoolean SupportsWrite();
    00129
    00130     /// \brief
    00131     /// Sets the flag indicating whether or not write is supported. This function should only
    00132     /// be called from an FDO Provider.
    00133     ///
    00134     /// \param value
    00135     /// Input The capability
    00136     ///
    00137     FDO_API void SetSupportsWrite(FdoBoolean value);
    00138
    00139 private:
    00140     FdoBoolean          m_supportsLocking;
    00141     FdoBoolean          m_supportsLongTransactions;
    00142     FdoBoolean          m_supportsWrite;
    00143     FdoClassDefinition* m_parent;
    00144     FdoLockType*        m_lockTypes;
    00145     FdoInt32            m_lockTypeCount;
    00146
    00147 };
    00148
    00149 /// \ingroup (typedefs)
    00150 /// \brief
    00151 /// FdoClassCapabilitiesP is a FdoPtr on FdoClassCapabilities, provided for convenience.
    00152 typedef FdoPtr<FdoClassCapabilities> FdoClassCapabilitiesP;
    00153
    00154 #endif
    00155
    00156

Please send us your comment about this page