//////////////////////////////////////////////////////////////////////////////
//
//  Copyright 2025 Autodesk, Inc.  All rights reserved.
//
//  Use of this software is subject to the terms of the Autodesk license 
//  agreement provided at the time of installation or download, or which 
//  otherwise accompanies this software in either electronic or hard copy form.   
//
//////////////////////////////////////////////////////////////////////////////
// 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
