static int cpyClass(ClClass * cl, CMPIConstClass * cc) { ClClass *ccl = (ClClass *) cc->hdl; CMPIData d; CMPIParameter p; CMPIType t; char *name; char *refName = NULL; int i, m, iq, mq, ip, mp, propId, methId, parmId; unsigned long quals; ClProperty *prop; ClMethod *meth; ClParameter *parm; cl->quals |= ccl->quals; for (i = 0, m = ClClassGetQualifierCount(ccl); i < m; i++) { ClClassGetQualifierAt(ccl, i, &d, &name); ClClassAddQualifierSpecial(&cl->hdr, &cl->qualifiers, name, d, &ccl->hdr); } for (i = 0, m = ClClassGetPropertyCount(ccl); i < m; i++) { ClClassGetPropertyAt(ccl, i, &d, &name, &quals, &refName); propId = ClClassAddProperty(cl, name, d, refName); if (refName) { free(refName); } prop = ((ClProperty *) ClObjectGetClSection(&cl->hdr, &cl->properties)) + propId - 1; for (iq = 0, mq = ClClassGetPropQualifierCount(ccl, i); iq < mq; iq++) { ClClassGetPropQualifierAt(ccl, i, iq, &d, &name); ClClassAddPropertyQualifierSpecial(&cl->hdr, prop, name, d, &ccl->hdr); } } for (i = 0, m = ClClassGetMethodCount(ccl); i < m; i++) { ClClassGetMethodAt(ccl, i, &t, &name, &quals); methId = ClClassAddMethod(cl, name, t); meth = ((ClMethod *) ClObjectGetClSection(&cl->hdr, &cl->methods)) + methId - 1; for (iq = 0, mq = ClClassGetMethQualifierCount(ccl, methId - 1); iq < mq; iq++) { ClClassGetMethQualifierAt(ccl, meth, iq, &d, &name); ClClassAddMethodQualifier(&cl->hdr, meth, name, d); } for (ip = 0, mp = ClClassGetMethParameterCount(ccl, methId - 1); ip < mp; ip++) { ClClassGetMethParameterAt(ccl, meth, ip, &p, &name); parmId = ClClassAddMethParameter(&cl->hdr, meth, name, p); parm = ((ClParameter *) ClObjectGetClSection(&cl->hdr, &meth->parameters)) + parmId - 1; for (iq = 0, mq = ClClassGetMethParamQualifierCount(parm); iq < mq; iq++) { ClClassGetMethParamQualifierAt(ccl, parm, iq, &d, &name); ClClassAddMethParamQualifier(&cl->hdr, parm, name, d); } } } return 0; }
static void param2xml(CMPIParameter * pdata, CMPIConstClass * cls, ClParameter * parm, CMPIString *pname, UtilStringBuffer * sb, unsigned int flags) { ClClass *cl = (ClClass *) cls->hdl; int i, m; CMPIData data; CMPIString qname; char *etag = "</PARAMETER>\n"; UtilStringBuffer *qsb = NULL; if (flags & FL_includeQualifiers) { m = ClClassGetMethParamQualifierCount(cl, parm); if (m) qsb = UtilFactory->newStrinBuffer(1024); for (i = 0; i < m; i++) { ClClassGetMethParamQualifierAt(cl, parm, i, &data, (char **) &qname.hdl); DATA2XML(&data, cls, &qname, NULL, "<QUALIFIER NAME=\"", "</QUALIFIER>\n", qsb, NULL, 0, 0); } } if (pdata->type == CMPI_ref) { SFCB_APPENDCHARS_BLOCK(sb, "<PARAMETER.REFERENCE NAME=\""); sb->ft->appendChars(sb, (char *) pname->hdl); if (pdata->refName) { SFCB_APPENDCHARS_BLOCK(sb, "\" REFERENCECLASS=\""); sb->ft->appendChars(sb, pdata->refName); } SFCB_APPENDCHARS_BLOCK(sb, "\">\n"); etag = "</PARAMETER.REFERENCE>\n"; } else if (pdata->type == CMPI_refA) { SFCB_APPENDCHARS_BLOCK(sb, "<PARAMETER.REFARRAY NAME=\""); sb->ft->appendChars(sb, (char *) pname->hdl); if (pdata->refName) { SFCB_APPENDCHARS_BLOCK(sb, "\" REFERENCECLASS=\""); sb->ft->appendChars(sb, pdata->refName); } SFCB_APPENDCHARS_BLOCK(sb, "\">"); etag = "</PARAMETER.REFARRAY>\n"; } else { if (pdata->type & CMPI_ARRAY) { char size[128]; SFCB_APPENDCHARS_BLOCK(sb, "<PARAMETER.ARRAY NAME=\""); sb->ft->appendChars(sb, (char *) pname->hdl); if (pdata->arraySize) { sprintf(size, "\" ARRAYSIZE=\"%d", pdata->arraySize); sb->ft->appendChars(sb, size); } etag = "</PARAMETER.ARRAY>\n"; } else { SFCB_APPENDCHARS_BLOCK(sb, "<PARAMETER NAME=\""); sb->ft->appendChars(sb, (char *) pname->hdl); } SFCB_APPENDCHARS_BLOCK(sb, "\" TYPE=\""); sb->ft->appendChars(sb, dataType(pdata->type)); SFCB_APPENDCHARS_BLOCK(sb, "\">\n"); } if (qsb) { sb->ft->appendChars(sb, (char *) qsb->hdl); qsb->ft->release(qsb); } sb->ft->appendChars(sb, etag); }