//
// Definition file for abstract class AmiAttribute.
//
// The information contained herein is confidential, proprietary
// to Autodesk, Inc., and considered a trade secret as defined
// in section 499C of the penal code of the State of California.
// Use of this information by anyone other than authorized
// employees of Autodesk, Inc. is granted only under a written
// non-disclosure agreement, expressly prescribing the scope
// and manner of such use.
//
// DESCRIPTION: This file contains the Attr namespace and Status.
// 
#ifndef AMD_ATTR_H
#define AMD_ATTR_H

#ifdef MCADATTS_BUILD
    #define MCADATTS_SDK __declspec(dllexport)
#else
    #define MCADATTS_SDK __declspec(dllimport)
#endif

namespace AmdtAttr
{

enum Status {    eOk        = 0,
                 eBad       = 3000,
                 eOutOfMemory,
                 eInvalidArg,
                 eObjectNotEditable,
                 
                 // instantiable attribute class manager errors
                 eClassRecordAlreadyExists = 3100,
                 eNoClassRecord,
                 eClassRecordInDb,

                 eFieldIndexOutOfRange = 3200,
                 eInvalidFieldName,
                 eInvalidFieldType,

                 eAttributeReadError    = 3300
            };

    enum AttrAssocType
    {
        kNoComments = 0x0000,
        kCopyAlways = 0x1249,
        kShareAlways = 0x2492,
        kIgnoreAlways = 0x4924
    };

    // type of attribute
    //
    enum AttributeMatchType
    {
        kInstantiable   = 1,
        kAmiDerived     = 2,
        kInstOrDerived  = 3,
        kSystem         = 4
    };

    enum AttrNameControl
    {
        kFail,
        kOverwrite,
        kAppend
    };
};

#endif  // AMD_ATTR_H
