in src/xercesc/validators/schema/GeneralAttributeCheck.cpp [405:695]
void GeneralAttributeCheck::initCharFlagTable()
{
unsigned short attList[E_Count][A_Count];
for (unsigned int i=0; i < E_Count; i++) {
for (unsigned int j=0; j < A_Count; j++) {
attList[i][j] = 0;
}
}
//
// Write it out to a temp file to be read back into this source later.
//
FILE* outFl = fopen("ea_table.out", "wt+");
fprintf(outFl, "unsigned short GeneralAttributeCheck::fgElemAttTable[GeneralAttributeCheck::E_Count][GeneralAttributeCheck::A_Count] =\n{\n {");
//"all"
attList[E_All][A_ID] = Att_Optional | DV_ID;
attList[E_All][A_MaxOccurs] = Att_Optional | DV_MaxOccurs1;
attList[E_All][A_MinOccurs] = Att_Optional | DV_MinOccurs1;
// "annotation"
attList[E_Annotation][A_ID] = Att_Optional | DV_ID;
// "any"
attList[E_Any][A_ID] = Att_Optional | DV_ID;
attList[E_Any][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_Any][A_MinOccurs] = Att_Optional | DV_NonNegInt;
attList[E_Any][A_Namespace] = Att_Optional;
attList[E_Any][A_ProcessContents] = Att_Optional | DV_ProcessContents;
// "anyAttribute"
attList[E_AnyAttribute][A_ID] = Att_Optional | DV_ID;
attList[E_AnyAttribute][A_Namespace] = Att_Optional;
attList[E_AnyAttribute][A_ProcessContents] = Att_Optional | DV_ProcessContents;
// "appinfo"
attList[E_Appinfo][A_Source]= Att_Optional | DV_AnyURI;
// attribute - global"
attList[E_AttributeGlobal][A_Default] = Att_Optional;
attList[E_AttributeGlobal][A_Fixed] = Att_Optional;
attList[E_AttributeGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_AttributeGlobal][A_Name] = Att_Required;
attList[E_AttributeGlobal][A_Type] = Att_Optional;
// "attribute - local"
attList[E_AttributeLocal][A_Default] = Att_Optional;
attList[E_AttributeLocal][A_Fixed] = Att_Optional;
attList[E_AttributeLocal][A_Form]= Att_Optional | DV_Form;
attList[E_AttributeLocal][A_ID] = Att_Optional | DV_ID;
attList[E_AttributeLocal][A_Name] = Att_Required;
attList[E_AttributeLocal][A_Type] = Att_Optional;
attList[E_AttributeLocal][A_Use] = Att_Optional | DV_Use;
// "attribute - ref"
attList[E_AttributeRef][A_Default] = Att_Optional;
attList[E_AttributeRef][A_Fixed] = Att_Optional;
attList[E_AttributeRef][A_ID] = Att_Optional | DV_ID;
attList[E_AttributeRef][A_Ref]= Att_Required;
attList[E_AttributeRef][A_Use] = Att_Optional | DV_Use;
// "attributeGroup - global"
attList[E_AttributeGroupGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_AttributeGroupGlobal][A_Name] = Att_Required;
// "attributeGroup - ref"
attList[E_AttributeGroupRef][A_ID] = Att_Optional | DV_ID;
attList[E_AttributeGroupRef][A_Ref]= Att_Required;
// "choice"
attList[E_Choice][A_ID] = Att_Optional | DV_ID;
attList[E_Choice][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_Choice][A_MinOccurs] = Att_Optional | DV_NonNegInt;
// "complexContent"
attList[E_ComplexContent][A_ID] = Att_Optional | DV_ID;
attList[E_ComplexContent][A_Mixed] = Att_Optional | DV_Boolean;
// "complexType - global"
attList[E_ComplexTypeGlobal][A_Abstract] = Att_Optional | DV_Boolean;
attList[E_ComplexTypeGlobal][A_Block] = Att_Optional;
attList[E_ComplexTypeGlobal][A_Final] = Att_Optional;
attList[E_ComplexTypeGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_ComplexTypeGlobal][A_Mixed] = Att_Optional | DV_Boolean;
attList[E_ComplexTypeGlobal][A_Name] = Att_Required;
// "complexType - local"
attList[E_ComplexTypeLocal][A_ID] = Att_Optional | DV_ID;
attList[E_ComplexTypeLocal][A_Mixed] = Att_Optional | DV_Boolean;
// "documentation"
attList[E_Documentation][A_Source] = Att_Optional | DV_AnyURI;
// "element - global"
attList[E_ElementGlobal][A_Abstract] = Att_Optional | DV_Boolean;
attList[E_ElementGlobal][A_Block] = Att_Optional;
attList[E_ElementGlobal][A_Default] = Att_Optional;
attList[E_ElementGlobal][A_Final] = Att_Optional;
attList[E_ElementGlobal][A_Fixed] = Att_Optional;
attList[E_ElementGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_ElementGlobal][A_Name] = Att_Required;
attList[E_ElementGlobal][A_Nillable] = Att_Optional | DV_Boolean;
attList[E_ElementGlobal][A_SubstitutionGroup] = Att_Optional;
attList[E_ElementGlobal][A_Type] = Att_Optional;
// "element - local"
attList[E_ElementLocal][A_Block]= Att_Optional;
attList[E_ElementLocal][A_Default] = Att_Optional;
attList[E_ElementLocal][A_Fixed] = Att_Optional;
attList[E_ElementLocal][A_Form] = Att_Optional | DV_Form;
attList[E_ElementLocal][A_ID] = Att_Optional | DV_ID;
attList[E_ElementLocal][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_ElementLocal][A_MinOccurs] = Att_Optional | DV_NonNegInt;
attList[E_ElementLocal][A_Name] = Att_Required;
attList[E_ElementLocal][A_Nillable] = Att_Optional | DV_Boolean;
attList[E_ElementLocal][A_Type] = Att_Optional;
//"element - ref"
attList[E_ElementRef][A_ID] = Att_Optional | DV_ID;
attList[E_ElementRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_ElementRef][A_MinOccurs] = Att_Optional | DV_NonNegInt;
attList[E_ElementRef][A_Ref] = Att_Required;
// "enumeration"
attList[E_Enumeration][A_ID] = Att_Optional | DV_ID;
attList[E_Enumeration][A_Value] = Att_Optional;
// "extension"
attList[E_Extension][A_Base] = Att_Required;
attList[E_Extension][A_ID] = Att_Optional | DV_ID;
//"field"
attList[E_Field][A_ID] = Att_Optional | DV_ID;
attList[E_Field][A_XPath] = Att_Required;
// "fractionDigits"
attList[E_FractionDigits][A_ID] = Att_Optional | DV_ID;
attList[E_FractionDigits][A_Value] = Att_Optional | DV_NonNegInt;
attList[E_FractionDigits][A_Fixed] = Att_Optional | DV_Boolean;
// "group - global"
attList[E_GroupGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_GroupGlobal][A_Name] = Att_Required;
// "group - ref"
attList[E_GroupRef][A_ID] = Att_Optional | DV_ID;
attList[E_GroupRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_GroupRef][A_MinOccurs] = Att_Optional | DV_NonNegInt;
attList[E_GroupRef][A_Ref] = Att_Required;
// "import"
attList[E_Import][A_ID] = Att_Optional | DV_ID;
attList[E_Import][A_Namespace] = Att_Optional;
attList[E_Import][A_SchemaLocation] = Att_Optional;
// "include"
attList[E_Include][A_ID] = Att_Optional | DV_ID;
attList[E_Include][A_SchemaLocation] = Att_Required;
// "key"
attList[E_Key][A_ID] = Att_Optional | DV_ID;
attList[E_Key][A_Name] = Att_Required;
// "keyref"
attList[E_KeyRef][A_ID] = Att_Optional | DV_ID;
attList[E_KeyRef][A_Name] = Att_Required;
attList[E_KeyRef][A_Refer] = Att_Required;
// "length"
attList[E_Length][A_ID] = Att_Optional | DV_ID;
attList[E_Length][A_Value] = Att_Optional | DV_NonNegInt;
attList[E_Length][A_Fixed] = Att_Optional | DV_Boolean;
// "list"
attList[E_List][A_ID] = Att_Optional | DV_ID;
attList[E_List][A_ItemType] = Att_Optional;
// "maxExclusive"
attList[E_MaxExclusive][A_ID] = Att_Optional | DV_ID;
attList[E_MaxExclusive][A_Value] = Att_Optional;
attList[E_MaxExclusive][A_Fixed] = Att_Optional | DV_Boolean;
// "maxInclusive"
attList[E_MaxInclusive][A_ID] = Att_Optional | DV_ID;
attList[E_MaxInclusive][A_Value] = Att_Optional;
attList[E_MaxInclusive][A_Fixed] = Att_Optional | DV_Boolean;
// "maxLength"
attList[E_MaxLength][A_ID] = Att_Optional | DV_ID;
attList[E_MaxLength][A_Value] = Att_Optional | DV_NonNegInt;
attList[E_MaxLength][A_Fixed] = Att_Optional | DV_Boolean;
// "minExclusive"
attList[E_MinExclusive][A_ID] = Att_Optional | DV_ID;
attList[E_MinExclusive][A_Value] = Att_Optional;
attList[E_MinExclusive][A_Fixed] = Att_Optional | DV_Boolean;
// "minInclusive"
attList[E_MinInclusive][A_ID] = Att_Optional | DV_ID;
attList[E_MinInclusive][A_Value] = Att_Optional;
attList[E_MinInclusive][A_Fixed] = Att_Optional | DV_Boolean;
// "minLength"
attList[E_MinLength][A_ID] = Att_Optional | DV_ID;
attList[E_MinLength][A_Value] = Att_Optional | DV_NonNegInt;
attList[E_MinLength][A_Fixed] = Att_Optional | DV_Boolean;
// "notation"
attList[E_Notation][A_ID] = Att_Optional | DV_ID;
attList[E_Notation][A_Name] = Att_Required;
attList[E_Notation][A_Public] = Att_Optional;
attList[E_Notation][A_System] = Att_Optional | DV_AnyURI;
// "pattern"
attList[E_Pattern][A_ID] = Att_Optional;
attList[E_Pattern][A_Value] = Att_Optional;
// "redefine"
attList[E_Redefine][A_ID] = Att_Optional | DV_ID;
attList[E_Redefine][A_SchemaLocation] = Att_Required;
// "restriction"
attList[E_Restriction][A_Base] = Att_Optional;
attList[E_Restriction][A_ID] = Att_Optional | DV_ID;
// "schema"
attList[E_Schema][A_AttributeFormDefault] = Att_Optional | DV_Form;
attList[E_Schema][A_BlockDefault] = Att_Optional;
attList[E_Schema][A_ElementFormDefault] = Att_Optional | DV_Form;
attList[E_Schema][A_FinalDefault] = Att_Optional;
attList[E_Schema][A_ID] = Att_Optional | DV_ID;
attList[E_Schema][A_TargetNamespace] = Att_Optional;
attList[E_Schema][A_Version] = Att_Optional;
// "selector"
attList[E_Selector][A_ID] = Att_Optional | DV_ID;
attList[E_Selector][A_XPath] = Att_Required;
// "sequence"
attList[E_Sequence][A_ID] = Att_Optional | DV_ID;
attList[E_Sequence][A_MaxOccurs] = Att_Optional | DV_MaxOccurs;
attList[E_Sequence][A_MinOccurs] = Att_Optional | DV_NonNegInt;
// "simpleContent"
attList[E_SimpleContent][A_ID] = Att_Optional | DV_ID;
// "simpleType - global"
attList[E_SimpleTypeGlobal][A_Final] = Att_Optional;
attList[E_SimpleTypeGlobal][A_ID] = Att_Optional | DV_ID;
attList[E_SimpleTypeGlobal][A_Name] = Att_Required;
// "simpleType - local"
attList[E_SimpleTypeLocal][A_Final] = Att_Optional;
attList[E_SimpleTypeLocal][A_ID] = Att_Optional | DV_ID;
// "totalDigits"
attList[E_TotalDigits][A_ID] = Att_Optional | DV_ID;
attList[E_TotalDigits][A_Value] = Att_Optional | DV_NonNegInt;
attList[E_TotalDigits][A_Fixed] = Att_Optional | DV_Boolean;
// "union"
attList[E_Union][A_ID] = Att_Optional | DV_ID;
attList[E_Union][A_MemberTypes] = Att_Optional;
// "unique"
attList[E_Unique][A_ID] = Att_Optional | DV_ID;
attList[E_Unique][A_Name] = Att_Required;
// "whitespace"
attList[E_WhiteSpace][A_ID] = Att_Optional | DV_ID;
attList[E_WhiteSpace][A_Value] = Att_Optional | DV_WhiteSpace;
attList[E_WhiteSpace][A_Fixed] = Att_Optional | DV_Boolean;
for (unsigned int j=0; j < E_Count; j++) {
for (unsigned int index = 0; index < A_Count-1; index++)
{
fprintf(outFl, " %d,", attList[j][index]);
}
fprintf(outFl, " %d", attList[j][A_Count - 1]);
if (j + 1 == E_Count)
fprintf(outFl, "}\n};");
else
fprintf(outFl, "},\n {");
}
fclose(outFl);
}