/**
 * Auto-generated schema from XSD
 * 
 * DO NOT EDIT - Generated by ts-xsd codegen
 * Source: xsd/sap/classes.xsd
 */

import adtcore from './adtcore';
import abapoo from './abapoo';
import abapsource from './abapsource';

export default {
  $xmlns: {
    adtcore: 'http://www.sap.com/adt/core',
    abapsource: 'http://www.sap.com/adt/abapsource',
    abapoo: 'http://www.sap.com/adt/oo',
    'class': 'http://www.sap.com/adt/oo/classes',
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    xsd: 'http://www.w3.org/2001/XMLSchema',
  },
  $imports: [
    adtcore,
    abapoo,
    abapsource,
  ],
  targetNamespace: 'http://www.sap.com/adt/oo/classes',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  element: [
    {
      name: 'abapClass',
      type: 'class:AbapClass',
    },
    {
      name: 'abapClassInclude',
      type: 'class:AbapClassInclude',
    },
  ],
  complexType: [
    {
      name: 'AbapClass',
      complexContent: {
        extension: {
          base: 'abapoo:AbapOoObject',
          sequence: {
            element: [
              {
                name: 'include',
                type: 'class:AbapClassInclude',
                minOccurs: '0',
                maxOccurs: 'unbounded',
              },
              {
                name: 'superClassRef',
                type: 'adtcore:AdtObjectReference',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'messageClassRef',
                type: 'adtcore:AdtObjectReference',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'rootEntityRef',
                type: 'adtcore:AdtObjectReference',
                minOccurs: '0',
                maxOccurs: '1',
              },
            ],
          },
          attribute: [
            {
              name: 'category',
              type: 'xsd:string',
            },
            {
              name: 'final',
              type: 'xsd:boolean',
            },
            {
              name: 'state',
              type: 'xsd:string',
            },
            {
              name: 'abstract',
              type: 'xsd:boolean',
            },
            {
              name: 'visibility',
              type: 'abapsource:AbapSourceObjectVisibility',
            },
            {
              name: 'sharedMemoryEnabled',
              type: 'xsd:boolean',
            },
            {
              name: 'constructorGenerated',
              type: 'xsd:boolean',
            },
            {
              name: 'hasTests',
              type: 'xsd:boolean',
            },
          ],
        },
      },
    },
    {
      name: 'AbapClassInclude',
      complexContent: {
        extension: {
          base: 'abapsource:AbapSourceObject',
          attribute: [
            {
              name: 'includeType',
              type: 'class:AbapClassIncludeType',
            },
          ],
        },
      },
    },
  ],
  simpleType: [
    {
      name: 'AbapClassCategory',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'generalObjectType',
          },
          {
            value: 'exceptionClass',
          },
          {
            value: 'testClass',
          },
          {
            value: 'exitClass',
          },
          {
            value: 'areaClass',
          },
          {
            value: 'factoryClass',
          },
          {
            value: 'persistentClass',
          },
          {
            value: 'bspClass',
          },
          {
            value: 'staticTypedLcpClass',
          },
          {
            value: 'behaviorPool',
          },
          {
            value: 'rfcProxyClass',
          },
          {
            value: 'entityEventHandler',
          },
          {
            value: 'communicationConnectionClass',
          },
          {
            value: 'others',
          },
        ],
      },
    },
    {
      name: 'AbapClassIncludeType',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'main',
          },
          {
            value: 'definitions',
          },
          {
            value: 'implementations',
          },
          {
            value: 'macros',
          },
          {
            value: 'testclasses',
          },
          {
            value: 'localtypes',
          },
        ],
      },
    },
  ],
} as const;
