Esempio n. 1
0
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;
}
Esempio n. 2
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);
}