/* @(#)Z 1.5 com/src/registry/PartKind.cpp, odconfig, od96nt, odnt9712d 97/03/21 17:16:00 (96/10/29 09:29:23) */
//====START_GENERATED_PROLOG======================================
//
//
//   COMPONENT_NAME: odconfig
//
//   CLASSES: none
//
//   ORIGINS: 27
//
//
//   (C) COPYRIGHT International Business Machines Corp. 1995,1996
//   All Rights Reserved
//   Licensed Materials - Property of IBM
//   US Government Users Restricted Rights - Use, duplication or
//   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//   	
//   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//   OR PERFORMANCE OF THIS SOFTWARE.
//
//====END_GENERATED_PROLOG========================================
//

/*
 *  This file was generated by the SOM Compiler.
 *  Generated using:
 *     SOM incremental update: somc/smmain.c
 */


/*
 *  This file was generated by the SOM Compiler and Emitter Framework.
 *  Generated using:
 *      SOM Emitter emitxtm: somc/smmain.c
 */

#define ODPartKind_Class_Source
#define SOMClass_Class_Source

#include <iset.h>
#include <ODTypes.h>

#include <PartKind.xih>
#include <PartInfi.xh>
#include <csetwrap.h>

#ifdef _PLATFORM_OS2_
#include <ODPagtun.h>
#endif

SOM_Scope void  SOMLINK ODPartKindInitODPartKind(ODPartKind *somSelf,
                                                  Environment *ev,
                                                 ISOString partKindName)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindInitODPartKind");

    somThis-> partKindName = partKindName;
}


SOM_Scope ODPartHandlerInfoInt*  SOMLINK ODPartKindGetPreferredPart(ODPartKind *somSelf,
                                                                     Environment *ev)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindGetPreferredPart");

    if ( !somThis-> preferredPart )
    {
        ICursor* cursor = somThis-> parts-> newCursor();

        if ( somThis-> parts-> setToFirst( *cursor) )
        {
            somThis-> preferredPart = somThis-> parts-> elementAt( *cursor);
        }
        delete cursor;
    }
    return somThis-> preferredPart;
}


SOM_Scope void  SOMLINK ODPartKindSetPreferredPart(ODPartKind *somSelf,
                                                    Environment *ev,
                                                   ODPartHandlerInfoInt* part)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindSetPreferredPart");

    somThis-> preferredPart = part;

    CWrap<ODPartHandlerInfoInt> partWrap( part);

    if ( !somThis-> parts-> contains( partWrap) )
    {
        somThis-> parts-> add( partWrap);
    }
}

SOM_Scope string  SOMLINK ODPartKindGetKey(ODPartKind *somSelf,
                                            Environment *ev)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindGetKey");

    return somThis-> partKindName;
}

SOM_Scope boolean  SOMLINK ODPartKindAdd(ODPartKind *somSelf,
                                          Environment *ev, ODPartHandlerInfoInt* part)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindAdd");

    CWrap<ODPartHandlerInfoInt> partWrap( part);

    return somThis-> parts-> add( partWrap);
}

SOM_Scope void  SOMLINK ODPartKindRemove(ODPartKind *somSelf,
                                          Environment *ev, ODPartHandlerInfoInt* part)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindRemove");

    CWrap<ODPartHandlerInfoInt> partWrap( part);
    ICursor* cursor = somThis-> parts-> newCursor();

    if ( somThis-> parts-> locate( partWrap, *cursor) )
    {
        somThis-> parts-> removeAt( *cursor);
    }
}

SOM_Scope long  SOMLINK ODPartKindCount(ODPartKind *somSelf,
                                         Environment *ev)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindCount");

    return somThis-> parts-> numberOfElements();
}

SOM_Scope void  SOMLINK ODPartKindsomInit(ODPartKind *somSelf)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindsomInit");

    somThis-> parts         = new PartSet;
    somThis-> preferredPart = 0;

    ODPartKind_parent_SOMObject_somInit(somSelf);
}

SOM_Scope void  SOMLINK ODPartKindsomUninit(ODPartKind *somSelf)
{
    /* ODPartKindData *somThis = ODPartKindGetData(somSelf); */
    ODPartKindMethodDebug("ODPartKind","ODPartKindsomUninit");

    ODPartKind_parent_SOMObject_somUninit(somSelf);
}


SOM_Scope void  SOMLINK ODPartKindsomDumpSelfInt(ODPartKind *somSelf,
                                                 long level)
{
    ODPartKindData *somThis = ODPartKindGetData(somSelf);
    ODPartKindMethodDebug("ODPartKind","ODPartKindsomDumpSelfInt");

    ODPartKind_parent_SOMObject_somDumpSelfInt(somSelf, level);
}

