/*
 * zGo2Object.h
 * 
 * Gocator system communication library
 * Copyright (C) 2010 by LMI Technologies Inc.
 * 
 * Licensed under The MIT License.
 * Redistributions of files must retain the above copyright notice.
 */
#ifndef LMITECH_GO2_Z_OBJECT_H_INCLUDED
#define LMITECH_GO2_Z_OBJECT_H_INCLUDED

#include <zApi.h>
#include <Go2Object.h>
#include <Go2ApiBegin.h>

typedef Go2Status (GO2_CALL *Go2ObjectReleaseMethod)(Go2Object object); 

#define GO2_OBJECT_FIELDS()                 \
    Go2Type type;                           \
    Go2ObjectReleaseMethod Release

typedef struct Go2ObjectClass
{   
    GO2_OBJECT_FIELDS(); 
} Go2ObjectClass; 

GO2_EXPORT(Go2Type) Go2Object_Init(Go2Object object, Go2Type type);
GO2_EXPORT(Go2Status) Go2Object_VRelease(Go2Object object); 

#include <Go2ApiEnd.h>

#endif      /* #ifndef LMITECH_GO2_Z_OBJECT_H_INCLUDED */
