void JSFunctionWriter::GenerateSource(String& sourceOut) { String source = ""; if (function_->IsConstructor()) { WriteConstructor(source); } else { WriteFunction(source); } sourceOut += source; }
/*---------------------------------------------------------------------- WriteRule ecrit une regle de structure ----------------------------------------------------------------------*/ static void WriteRule (SRule * pSRule) { int j; WriteName (pSRule->SrName); WriteShort (pSRule->SrNDefAttrs); for (j = 0; j < pSRule->SrNDefAttrs; j++) WriteShort (pSRule->SrDefAttr[j]); for (j = 0; j < pSRule->SrNDefAttrs; j++) WriteSignedShort (pSRule->SrDefAttrValue[j]); for (j = 0; j < pSRule->SrNDefAttrs; j++) WriteBoolean (pSRule->SrDefAttrModif[j]); WriteShort (pSRule->SrNLocalAttrs); for (j = 0; j < pSRule->SrNLocalAttrs; j++) WriteShort (pSRule->SrLocalAttr->Num[j]); for (j = 0; j < pSRule->SrNLocalAttrs; j++) WriteBoolean (pSRule->SrRequiredAttr->Bln[j]); WriteBoolean (pSRule->SrUnitElem); WriteBoolean (pSRule->SrRecursive); WriteBoolean (pSRule->SrExportedElem); if (pSRule->SrExportedElem) { WriteShort (pSRule->SrExportContent); WriteName (pSRule->SrNatExpContent); } WriteShort (pSRule->SrFirstExcept); WriteShort (pSRule->SrLastExcept); WriteShort (pSRule->SrNInclusions); for (j = 0; j < pSRule->SrNInclusions; j++) WriteShort (pSRule->SrInclusion[j]); WriteShort (pSRule->SrNExclusions); for (j = 0; j < pSRule->SrNExclusions; j++) WriteShort (pSRule->SrExclusion[j]); WriteBoolean (pSRule->SrRefImportedDoc); WriteConstructor (pSRule->SrConstruct); switch (pSRule->SrConstruct) { case CsNatureSchema: /* don't write anything */ break; case CsBasicElement: WriteBasicType (pSRule->SrBasicType); break; case CsReference: WriteShort (pSRule->SrReferredType); WriteName (pSRule->SrRefTypeNat); break; case CsIdentity: WriteShort (pSRule->SrIdentRule); break; case CsList: WriteShort (pSRule->SrListItem); WriteShort (pSRule->SrMinItems); WriteShort (pSRule->SrMaxItems); break; case CsChoice: WriteSignedShort (pSRule->SrNChoices); if (pSRule->SrNChoices > 0) for (j = 0; j < pSRule->SrNChoices; j++) WriteShort (pSRule->SrChoice[j]); break; case CsAggregate: case CsUnorderedAggregate: WriteShort (pSRule->SrNComponents); for (j = 0; j < pSRule->SrNComponents; j++) WriteShort (pSRule->SrComponent[j]); for (j = 0; j < pSRule->SrNComponents; j++) WriteBoolean (pSRule->SrOptComponent[j]); break; case CsConstant: WriteShort (pSRule->SrIndexConst); break; case CsPairedElement: WriteBoolean (pSRule->SrFirstOfPair); break; case CsExtensionRule: break; case CsDocument: case CsAny: case CsEmpty: break; } }