.TH  3  2005-06-09 "sfcc" "SFCBroker Client Library"
.SH NAME
CMCIClientFT.getClass() \- Get class as reference
.SH SYNOPSIS
.nf
.B #include <cmci.h>
.sp
.BI CMPIConstClass *
.BI CMCIClientFT.getClass (CMCIClient* cl,
.br
.BI				CMPIObjectPath* op,
.br
.BI				CMPIFlags flags,
.br
.BI				char** properties,
.br
.BI				CMPIStatus* rc);
.br
.sp
.fi
.SH DESCRIPTION
Get Class using \fIop\fP as reference. The content of the returned
class structure can be controled using the \fIflags\fP parameter.
.PP
Arguments are the client object pointer \fIcl\fP, ObjectPath object 
pointer \fIop\fP that contains namespace and classname components,
\fIflags\fP to affect the returned class structure content, \fIproperties\fP
array, where if not NULL the members of the array define one or more Property
names, and \fIrc\fP the CMPI return status (suppressed when NULL).
.PP
The \fIflags\fP argument is a bit mask that can contain combinations of 
the following flags - CMPI_FLAG_LocalOnly, CMPI_FLAG_IncludeQualifiers and CMPI_FLAG_IncludeClassOrigin.
.PP
The \fIproperties\fP array defines what properties should be returned 
for the class.
If this argument is not NULL, only the class properties in the list are 
returned.
If it's NULL all class properties are returned.
.PP
.SH "RETURN VALUE"
When successful the \fBCMCIClientFT.getClass()\fP function returns a pointer
to a CMPIConstClass object and sets a successful status code in \fIrc\fR.
When unsuccessful it returns NULL and sets the \fIrc\fP argument with the
error code and and corresponding error string.
.SH "ERRORS"
.sp
.SH "EXAMPLES"
   CMCIClient *cc;
   CMPIObjectPath * objectpath;
   CMPIInstance * instance;
   CMPIEnumeration * enumeration;
   CMPIClass *class;
   CMPIStatus status;

   /* Setup a conncetion to the CIMOM */   
   cc = cmciConnect("localhost", NULL, NULL, NULL, NULL, NULL);

   objectpath = newCMPIObjectPath("root/cimv2", "Linux_ComputerSystem", NULL);
   class = cc->ft->getClass(cc, objectpath, 0, NULL, &status);

   if (!status.rc) {
	fprintf(stderr, "operation error code %d description %s\n",
			status.rc, status.msg->hdl);
	abort();
   }
.SH "CONFORMING TO"
.sp
.SH "SEE ALSO"
Common Manageability Programming Interface (CMPI) - OpenGroup,
.br
CMCIClient(3), CMPIConstClass(3), CMPIObjectPath(3), CMPIFlags(3), 
CMPIStatus(3)
