cmpimacs.h File Reference

#include "OW_config.h"
#include "cmpidt.h"
#include "cmpift.h"

Include dependency graph for cmpimacs.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define CMReturn(rc)
#define CMReturnWithString(rc, str)
#define CMReturnWithChars(b, rc, chars)
#define CMSetStatus(st, rcp)
#define CMSetStatusWithString(st, rcp, string)
#define CMSetStatusWithChars(mb, st, rcp, chars)
#define EXTERN_C
#define CMIsNullObject(o)   ((o)==NULL || *((void**)(o))==NULL)
#define CMIsNullValue(v)   ((v.state) & CMPI_nullValue)
#define CMIsKeyValue(v)   ((v.state) & CMPI_keyValue)
#define CMIsArray(v)   ((v.type) & CMPI_ARRAY)
#define CMClone(o, rc)   ((o)->ft->clone((o),(rc)))
#define CMRelease(o)   ((o)->ft->release((o)))
#define CMGetCharPtr(s)   ((s)!=NULL?((char*)(s)->hdl):(char*)"(NULL)")
#define CMNewInstance(b, c, rc)   ((b)->eft->newInstance((b),(c),(rc)))
#define CMNewObjectPath(b, n, c, rc)   ((b)->eft->newObjectPath((b),(n),(c),(rc)))
#define CMNewString(b, s, rc)   ((b)->eft->newString((b),(s),(rc)))
#define CMNewArgs(b, rc)   ((b)->eft->newArgs((b),(rc)))
#define CMNewArray(b, c, t, rc)   ((b)->eft->newArray((b),(c),(t),(rc)))
#define CMNewDateTime(b, rc)   ((b)->eft->newDateTime((b),(rc)))
#define CMNewDateTimeFromBinary(b, d, i, rc)   ((b)->eft->newDateTimeFromBinary((b),(d),(i),(rc)))
#define CMNewDateTimeFromChars(b, d, rc)   ((b)->eft->newDateTimeFromChars((b),(d),(rc)))
#define CMNewSelectExp(b, q, l, p, rc)   ((b)->eft->newSelectExp((b),(q),(l),(p),(rc)))
#define CMClassPathIsA(b, p, pn, rc)   ((b)->eft->classPathIsA((b),(p),(pn),(rc)))
#define CDToString(b, o, rc)   ((b)->eft->toString((b),(void*)(o),(rc)))
#define CDIsOfType(b, o, t, rc)   (b)->eft->isOfType((b),(void*)(o),(t),(rc)))
#define CDGetType(b, o, rc)   ((b)->eft->getType((b),(void*)(o),(rc)))
#define CMFmtArgs0()   0
#define CMFmtArgs1(v1, t1)   1,v1,t1
#define CMFmtArgs2(v1, t1, v2, t2)   2,v1,t1,v2,t2
#define CMFmtArgs3(v1, t1, v2, t2, v3, t3)   3,v1,t1,v2,t2,v3,t3
#define CMFmtArgs4(v1, t1, v2, t2, v3, t3, v4, t4)   4,v1,t1,v2,t2,v3,t3,v4,t4
#define CMFmtArgs5(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5)   5,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5
#define CMFmtArgs6(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5, v6, t6)   6,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,
#define CMFmtArgs7(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5, v6, t6, v7, t7)   7,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7
#define CMFmtArgs8(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5, v6, t6, v7, t7, v8, t8)   8,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,
#define CMFmtArgs9(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5, v6, t6, v7, t7, v8, t8, v9, t9)   9,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,v9,t9
#define CMFmtArgs10(v1, t1, v2, t2, v3, t3, v4, t4, v5, t5, v6, t6, v7, t7, v8, t8, v9, t9, v10, t10)   10,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,v9,t9,v10,t10
#define CMGetMessage(b, id, def, rc, parms)   ((b)->eft->getMessage((b),(id),(def),(rc),parms))
#define CMGetProperty(i, n, rc)   ((i)->ft->getProperty((i),(n),(rc)))
#define CMGetPropertyAt(i, num, s, rc)   ((i)->ft->getPropertyAt((i),(num),(s),(rc)))
#define CMSetProperty(i, n, v, t)   ((i)->ft->setProperty((i),(n),(CMPIValue*)(v),(t)))
#define CMGetPropertyCount(i, rc)   ((i)->ft->getPropertyCount((i),(rc)))
#define CMGetObjectPath(i, rc)   ((i)->ft->getObjectPath((i),(rc)))
#define CMSetPropertyFilter(i, pl, k)   ((i)->ft->setPropertyFilter((i),(pl),(k)))
#define CMSetHostname(p, n)   ((p)->ft->setHostname((p),(n)))
#define CMGetHostname(p, rc)   ((p)->ft->getHostname((p),(rc)))
#define CMSetNameSpace(p, n)   ((p)->ft->setNameSpace((p),(n)))
#define CMGetNameSpace(p, rc)   ((p)->ft->getNameSpace((p),(rc)))
#define CMSetClassName(p, n)   ((p)->ft->setClassName((p),(n)))
#define CMGetClassName(p, rc)   ((p)->ft->getClassName((p),(rc)))
#define CMAddKey(p, n, v, t)   ((p)->ft->addKey((p),(n),(CMPIValue*)(v),(t)))
#define CMGetKey(p, n, rc)   ((p)->ft->getKey((p),(n),(rc)))
#define CMGetKeyAt(p, i, n, rc)   ((p)->ft->getKeyAt((p),(i),(n),(rc)))
#define CMGetKeyCount(p, rc)   ((p)->ft->getKeyCount((p),(rc)))
#define CMSetNameSpaceFromObjectPath(p, s)   ((p)->ft->setNameSpaceFromObjectPath((p),(s)))
#define CMSetHostAndNameSpaceFromObjectPath(p, s)   ((p)->ft->setHostAndNameSpaceFromObjectPath((p),(s)))
#define CMGetArrayCount(a, rc)   ((a)->ft->getSize((a),(rc)))
#define CMGetArrayType(a, rc)   ((a)->ft->getSimpleType((a),(rc)))
#define CMGetArrayElementAt(a, n, rc)   ((a)->ft->getElementAt((a),(n),(rc)))
#define CMSetArrayElementAt(a, n, v, t)   ((a)->ft->setElementAt((a),(n),(CMPIValue*)(v),(t)))
#define CMAddArg(a, n, v, t)   ((a)->ft->addArg((a),(n),(CMPIValue*)(v),(t)))
#define CMGetArg(a, n, rc)   ((a)->ft->getArg((a),(n),(rc)))
#define CMGetArgAt(a, p, n, rc)   ((a)->ft->getArgAt((a),(p),(n),(rc)))
#define CMGetArgCount(a, rc)   ((a)->ft->getArgCount((a),(rc)))
#define CMGetCharsPtr(st, rc)   ((st)->ft->getCharPtr((st),(rc)))
#define CMGetStringFormat(d, rc)   ((d)->ft->getStringFormat((d),(rc)))
#define CMGetBinaryFormat(d, rc)   ((d)->ft->getBinaryFormat((d),(rc)))
#define CMIsInterval(d, rc)   ((d)->ft->isInterval((d),(rc)))
#define CMGetNext(n, rc)   ((n)->ft->getNext((n),(rc)))
#define CMHasNext(n, rc)   ((n)->ft->hasNext((n),(rc)))
#define CMToArray(n, rc)   ((n)->ft->toArray((n),(rc)))
#define CMReturnData(r, v, t)   ((r)->ft->returnData((r),(CMPIValue*)(v),(t)))
#define CMReturnInstance(r, i)   ((r)->ft->returnInstance((r),(i)))
#define CMReturnObjectPath(r, o)   ((r)->ft->returnObjectPath((r),(o)))
#define CMReturnDone(r)   ((r)->ft->returnDone((r)))
#define CMGetContextEntry(c, n, rc)   ((c)->ft->getEntry((c),(n),(rc)))
#define CMGetContextEntryAt(c, p, n, rc)   ((c)->ft->getEntryAt((c),(p),(n),(rc)))
#define CMGetContextEntryCount(c, rc)   ((c)->ft->getEntryCount((c),(rc)))
#define CMAddContextEntry(c, n, v, t)   ((c)->ft->addEntry((c),(n),(CMPIValue*)(v),(t)))
#define CMGetSelExpString(s, rc)   ((s)->ft->getString((s),(rc)))
#define CMEvaluateSelExp(s, i, r)   ((s)->ft->evaluate((s),(i),(r)))
#define CMGetDoc(s, rc)   ((s)->ft->getDOC((s),(rc)))
#define CMGetCod(s, rc)   ((s)->ft->getCOD((s),(rc)))
#define CMGetSubCondCount(c, rc)   ((c)->ft->getCountAndType((c),NULL,(rc)))
#define CMGetSubCondAt(c, p, rc)   ((c)->ft->getSubCondAt((c),(p),(rc)))
#define CMGetPredicateCount(s, rc)   ((s)->ft->getCount((s),(rc)))
#define CMGetPredicateAt(s, p, rc)   ((s)->ft->getPredicateAt((s),(p),(rc)))
#define CMGetPredicate(s, n, rc)   ((s)->ft->getPredicate((s),(n),(rc)))
#define CMGetPredicateData(p, t, o, n, v)   ((p)->ft->getData((p),(t),(o),(n),(v)))
#define CMEvaluatePredicate(p, v, t, rc)   ((p)->ft->evaluate((p),(CMPIValue*)(v),(t),(rc)))
#define CBGetClassification(b)   ((b)->bft->brokerClassification)
#define CBBrokerVersion(b)   ((b)->bft->brokerVersion)
#define CBBrokerName(b)   ((b)->bft->brokerName)
#define CBPrepareAttachThread(b, c)   ((b)->bft->prepareAttachThread((b),(c)))
#define CBAttachThread(b, c)   ((b)->bft->attachThread((b),(c)))
#define CBDetachThread(b, c)   ((b)->bft->detachThread((b),(c)))
#define CBDeliverIndication(b, c, n, i)   ((b)->bft->deliverIndication((b),(c),(n),(i)))
#define CBEnumInstanceNames(b, c, p, rc)   ((b)->bft->enumInstanceNames((b),(c),(p),(rc)))
#define CBEnumInstances(b, c, p, pr, rc)   ((b)->bft->enumInstances((b),(c),(p),(pr),(rc)))
#define CBGetInstance(b, c, p, pr, rc)   ((b)->bft->getInstance((b),(c),(p),(pr),(rc)))
#define CBCreateInstance(b, c, p, i, rc)   ((b)->bft->createInstance((b),(c),(p),(i),(rc)))
#define CBSetInstance(b, c, p, i)   ((b)->bft->setInstance((b),(c),(p),(i)))
#define CBDeleteInstance(b, c, p)   ((b)->bft->deleteInstance((b),(c),(p)))
#define CBExecQuery(b, c, p, l, q, rc)   ((b)->bft->execQuery((b),(c),(p),(l),(q),(rc)))
#define CBAssociators(b, c, p, acl, rcl, r, rr, pr, rc)   ((b)->bft->associators((b),(c),(p),(acl),(rcl),(r),(rr),(pr),(rc)))
#define CBAssociatorNames(b, c, p, acl, rcl, r, rr, rc)   ((b)->bft->associatorNames((b),(c),(p),(acl),(rcl),(r),(rr),(rc)))
#define CBReferences(b, c, p, acl, r, pr, rc)   ((b)->bft->references((b),(c),(p),(acl),(r),(pr),(rc)))
#define CBReferenceNames(b, c, p, acl, r, rc)   ((b)->bft->referenceNames((b),(c),(p),(acl),(r),(rc)))
#define CBInvokeMethod(b, c, p, m, ai, ao, rc)   ((b)->bft->invokeMethod((b),(c),(p),(m),(ai),(ao),(rc)))
#define CBSetProperty(b, c, p, n, v, t)   ((b)->bft->setProperty((b),(c),(p),(n),(CMPIValue*)(v),(t)))
#define CBGetProperty(b, c, p, n, rc)   (b)->bft->getProperty((b),(c),(p),(n),(rc))
#define CMNoHook   if (brkr)
#define CMInstanceMIStub(pfx, pn, broker, hook)
#define CMAssociationMIStub(pfx, pn, broker, hook)
#define CMMethodMIStub(pfx, pn, broker, hook)
#define CMPropertyMIStub(pfx, pn, broker, hook)
#define CMIndicationMIStub(pfx, pn, broker, hook)
#define CMInstanceMIFactory(cn, pn)
#define CMAssociationMIFactory(cn, pn)
#define CMMethodMIFactory(cn, pn)
#define CMPropertyMIFactory(cn, pn)
#define CMIndicationMIFactory(cn, pn)
#define CMProviderBase(b)


Define Documentation

#define CBAssociatorNames b,
c,
p,
acl,
rcl,
r,
rr,
rc   )     ((b)->bft->associatorNames((b),(c),(p),(acl),(rcl),(r),(rr),(rc)))
 

Definition at line 1564 of file cmpimacs.h.

#define CBAssociators b,
c,
p,
acl,
rcl,
r,
rr,
pr,
rc   )     ((b)->bft->associators((b),(c),(p),(acl),(rcl),(r),(rr),(pr),(rc)))
 

Definition at line 1525 of file cmpimacs.h.

#define CBAttachThread b,
 )     ((b)->bft->attachThread((b),(c)))
 

Definition at line 1319 of file cmpimacs.h.

#define CBBrokerName  )     ((b)->bft->brokerName)
 

Definition at line 1287 of file cmpimacs.h.

#define CBBrokerVersion  )     ((b)->bft->brokerVersion)
 

Definition at line 1278 of file cmpimacs.h.

#define CBCreateInstance b,
c,
p,
i,
rc   )     ((b)->bft->createInstance((b),(c),(p),(i),(rc)))
 

Definition at line 1431 of file cmpimacs.h.

#define CBDeleteInstance b,
c,
 )     ((b)->bft->deleteInstance((b),(c),(p)))
 

Definition at line 1463 of file cmpimacs.h.

#define CBDeliverIndication b,
c,
n,
i   )     ((b)->bft->deliverIndication((b),(c),(n),(i)))
 

Definition at line 1353 of file cmpimacs.h.

#define CBDetachThread b,
 )     ((b)->bft->detachThread((b),(c)))
 

Definition at line 1334 of file cmpimacs.h.

#define CBEnumInstanceNames b,
c,
p,
rc   )     ((b)->bft->enumInstanceNames((b),(c),(p),(rc)))
 

Definition at line 1370 of file cmpimacs.h.

#define CBEnumInstances b,
c,
p,
pr,
rc   )     ((b)->bft->enumInstances((b),(c),(p),(pr),(rc)))
 

Definition at line 1392 of file cmpimacs.h.

#define CBExecQuery b,
c,
p,
l,
q,
rc   )     ((b)->bft->execQuery((b),(c),(p),(l),(q),(rc)))
 

Definition at line 1482 of file cmpimacs.h.

#define CBGetClassification  )     ((b)->bft->brokerClassification)
 

Definition at line 1269 of file cmpimacs.h.

#define CBGetInstance b,
c,
p,
pr,
rc   )     ((b)->bft->getInstance((b),(c),(p),(pr),(rc)))
 

Definition at line 1413 of file cmpimacs.h.

#define CBGetProperty b,
c,
p,
n,
rc   )     (b)->bft->getProperty((b),(c),(p),(n),(rc))
 

Definition at line 1688 of file cmpimacs.h.

#define CBInvokeMethod b,
c,
p,
m,
ai,
ao,
rc   )     ((b)->bft->invokeMethod((b),(c),(p),(m),(ai),(ao),(rc)))
 

Definition at line 1649 of file cmpimacs.h.

#define CBPrepareAttachThread b,
 )     ((b)->bft->prepareAttachThread((b),(c)))
 

Definition at line 1304 of file cmpimacs.h.

#define CBReferenceNames b,
c,
p,
acl,
r,
rc   )     ((b)->bft->referenceNames((b),(c),(p),(acl),(r),(rc)))
 

Definition at line 1626 of file cmpimacs.h.

#define CBReferences b,
c,
p,
acl,
r,
pr,
rc   )     ((b)->bft->references((b),(c),(p),(acl),(r),(pr),(rc)))
 

Definition at line 1597 of file cmpimacs.h.

#define CBSetInstance b,
c,
p,
i   )     ((b)->bft->setInstance((b),(c),(p),(i)))
 

Definition at line 1448 of file cmpimacs.h.

#define CBSetProperty b,
c,
p,
n,
v,
 )     ((b)->bft->setProperty((b),(c),(p),(n),(CMPIValue*)(v),(t)))
 

Definition at line 1670 of file cmpimacs.h.

#define CDGetType b,
o,
rc   )     ((b)->eft->getType((b),(void*)(o),(rc)))
 

Definition at line 405 of file cmpimacs.h.

#define CDIsOfType b,
o,
t,
rc   )     (b)->eft->isOfType((b),(void*)(o),(t),(rc)))
 

Definition at line 389 of file cmpimacs.h.

#define CDToString b,
o,
rc   )     ((b)->eft->toString((b),(void*)(o),(rc)))
 

Definition at line 372 of file cmpimacs.h.

#define CMAddArg a,
n,
v,
 )     ((a)->ft->addArg((a),(n),(CMPIValue*)(v),(t)))
 

Definition at line 795 of file cmpimacs.h.

#define CMAddContextEntry c,
n,
v,
 )     ((c)->ft->addEntry((c),(n),(CMPIValue*)(v),(t)))
 

Definition at line 1068 of file cmpimacs.h.

#define CMAddKey p,
n,
v,
 )     ((p)->ft->addKey((p),(n),(CMPIValue*)(v),(t)))
 

Definition at line 638 of file cmpimacs.h.

#define CMAssociationMIFactory cn,
pn   ) 
 

Value:

extern "C" \
 CMPIAssociationMI* pn##_Create_AssociationMI(CMPIBroker* broker, CMPIContext *ctxp) { \
   static CMPIAssociationMIFT assocMIFT={ \
    CMPICurrentVersion, \
    CMPICurrentVersion, \
    "association" #pn, \
    (CMPIStatus(*)(CMPIAssociationMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \
    CmpiAssociationMI::driveAssociators, \
    CmpiAssociationMI::driveAssociatorNames, \
    CmpiAssociationMI::driveReferences, \
    CmpiAssociationMI::driveReferenceNames, \
  }; \
   static CMPIAssociationMI mi; \
   fprintf(stderr,"--- _Create_AssociationMI() broker: %p\n",broker); \
   CmpiContext ctx(ctxp); \
   mi.ft=&assocMIFT; \
   CmpiAssociationMI *provider=new cn(broker,ctx); \
   mi.hdl=provider; \
   if (CmpiProviderBase::testAndSetOneTime(2)) { \
       provider->initialize(ctx); \
       CmpiProviderBase::setBroker(broker); \
    } \
    return &mi; \
 }

Definition at line 1992 of file cmpimacs.h.

#define CMAssociationMIStub pfx,
pn,
broker,
hook   ) 
 

Value:

static CMPIAssociationMIFT assocMIFT__={ \
   CMPICurrentVersion, \
   CMPICurrentVersion, \
   "asscociation" #pn, \
   pfx##AssociationCleanup, \
   pfx##Associators, \
   pfx##AssociatorNames, \
   pfx##References, \
   pfx##ReferenceNames, \
  }; \
  EXTERN_C \
  CMPIAssociationMI* pn##_Create_AssociationMI(CMPIBroker* brkr,CMPIContext *ctx) { \
   static CMPIAssociationMI mi={ \
      NULL, \
      &assocMIFT__, \
   }; \
   broker=brkr; \
   hook; \
   return &mi;  \
  }

Definition at line 1776 of file cmpimacs.h.

#define CMClassPathIsA b,
p,
pn,
rc   )     ((b)->eft->classPathIsA((b),(p),(pn),(rc)))
 

Definition at line 354 of file cmpimacs.h.

#define CMClone o,
rc   )     ((o)->ft->clone((o),(rc)))
 

Definition at line 202 of file cmpimacs.h.

#define CMEvaluatePredicate p,
v,
t,
rc   )     ((p)->ft->evaluate((p),(CMPIValue*)(v),(t),(rc)))
 

Definition at line 1252 of file cmpimacs.h.

#define CMEvaluateSelExp s,
i,
 )     ((s)->ft->evaluate((s),(i),(r)))
 

Definition at line 1102 of file cmpimacs.h.

 
#define CMFmtArgs0  )     0
 

Definition at line 423 of file cmpimacs.h.

#define CMFmtArgs1 v1,
t1   )     1,v1,t1
 

Definition at line 424 of file cmpimacs.h.

#define CMFmtArgs10 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5,
v6,
t6,
v7,
t7,
v8,
t8,
v9,
t9,
v10,
t10   )     10,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,v9,t9,v10,t10
 

Definition at line 442 of file cmpimacs.h.

#define CMFmtArgs2 v1,
t1,
v2,
t2   )     2,v1,t1,v2,t2
 

Definition at line 426 of file cmpimacs.h.

#define CMFmtArgs3 v1,
t1,
v2,
t2,
v3,
t3   )     3,v1,t1,v2,t2,v3,t3
 

Definition at line 428 of file cmpimacs.h.

#define CMFmtArgs4 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4   )     4,v1,t1,v2,t2,v3,t3,v4,t4
 

Definition at line 430 of file cmpimacs.h.

#define CMFmtArgs5 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5   )     5,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5
 

Definition at line 432 of file cmpimacs.h.

#define CMFmtArgs6 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5,
v6,
t6   )     6,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,
 

Definition at line 434 of file cmpimacs.h.

#define CMFmtArgs7 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5,
v6,
t6,
v7,
t7   )     7,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7
 

Definition at line 436 of file cmpimacs.h.

#define CMFmtArgs8 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5,
v6,
t6,
v7,
t7,
v8,
t8   )     8,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,
 

Definition at line 438 of file cmpimacs.h.

#define CMFmtArgs9 v1,
t1,
v2,
t2,
v3,
t3,
v4,
t4,
v5,
t5,
v6,
t6,
v7,
t7,
v8,
t8,
v9,
t9   )     9,v1,t1,v2,t2,v3,t3,v4,t4,v5,t5,v6,t6,v7,t7,v8,t8,v9,t9
 

Definition at line 440 of file cmpimacs.h.

#define CMGetArg a,
n,
rc   )     ((a)->ft->getArg((a),(n),(rc)))
 

Definition at line 810 of file cmpimacs.h.

#define CMGetArgAt a,
p,
n,
rc   )     ((a)->ft->getArgAt((a),(p),(n),(rc)))
 

Definition at line 826 of file cmpimacs.h.

#define CMGetArgCount a,
rc   )     ((a)->ft->getArgCount((a),(rc)))
 

Definition at line 839 of file cmpimacs.h.

#define CMGetArrayCount a,
rc   )     ((a)->ft->getSize((a),(rc)))
 

Definition at line 730 of file cmpimacs.h.

#define CMGetArrayElementAt a,
n,
rc   )