<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<ErrorGenerator>
  <Ifdef>_LintWarnings__</Ifdef>
  <InputFileBase>../../src/localized_strings/</InputFileBase>
  <Language>EN</Language>
  <Language>CN</Language>
  <Language>CS</Language>
  <Language>DA</Language>
  <Language>DE</Language>
  <Language>ES</Language>
  <Language>FI</Language>
  <Language>FR</Language>
  <Language>IT</Language>
  <Language>JP</Language>
  <Language>KR</Language>
  <Language>NB</Language>
  <Language>NL</Language>
  <Language>PL</Language>
  <Language>PT</Language>
  <Language>RU</Language>
  <Language>SV</Language>
  <Language>TR</Language>
  <Language>TW</Language>
  <XmlInputFile>/Lint_Warnings.xml</XmlInputFile>
  <OutputCppFile>../../src/cpp/embedding/WarningConstants.cpp</OutputCppFile>
  <OutputJavaFile>../../src/java/macromedia/asc/embedding/WarningConstants.java</OutputJavaFile>
  <OutputHFile>../../src/cpp/embedding/WarningConstants.h</OutputHFile>
  <ArrayName>allWarningConstants</ArrayName>
  <LangCountName>kNumLanguages</LangCountName>
  <CountName>kNumWarningConstants</CountName>
  <NamespaceName>WarningConstants</NamespaceName>
  <MainInclude>LintEvaluator.h</MainInclude>
</ErrorGenerator>

