genICC.cmd
上传用户:huihehuasu
上传日期:2007-01-10
资源大小:6948k
文件大小:7k
源码类别:

xml/soap/webservice

开发平台:

C/C++

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  *
  5.  * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
  6.  * reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  *
  12.  * 1. Redistributions of source code must retain the above copyright
  13.  *    notice, this list of conditions and the following disclaimer. 
  14.  *
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in
  17.  *    the documentation and/or other materials provided with the
  18.  *    distribution.
  19.  *
  20.  * 3. The end-user documentation included with the redistribution,
  21.  *    if any, must include the following acknowledgment:  
  22.  *       "This product includes software developed by the
  23.  *        Apache Software Foundation (http://www.apache.org/)."
  24.  *    Alternately, this acknowledgment may appear in the software itself,
  25.  *    if and wherever such third-party acknowledgments normally appear.
  26.  *
  27.  * 4. The names "Xerces" and "Apache Software Foundation" must
  28.  *    not be used to endorse or promote products derived from this
  29.  *    software without prior written permission. For written 
  30.  *    permission, please contact apache@apache.org.
  31.  *
  32.  * 5. Products derived from this software may not be called "Apache",
  33.  *    nor may "Apache" appear in their name, without prior written
  34.  *    permission of the Apache Software Foundation.
  35.  *
  36.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  37.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  38.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  39.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  40.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  41.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  42.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  43.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  44.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  45.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  46.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  47.  * SUCH DAMAGE.
  48.  * ====================================================================
  49.  *
  50.  * This software consists of voluntary contributions made by many
  51.  * individuals on behalf of the Apache Software Foundation and was
  52.  * originally based on software copyright (c) 1999, International
  53.  * Business Machines, Inc., http://www.apache.org.  For more
  54.  * information on the Apache Software Foundation, please see
  55.  * <http://www.apache.org/>.
  56.  */
  57. /*
  58.  * Object Rexx script to generate ICC include files for samples in the
  59.  * Xerces-C project.
  60.  */
  61. IF LoadRexxUtil() THEN EXIT
  62. here = Directory()~translate('* ', ' ')
  63. base = here~subword(1, here~words - 4)~strip~translate(' ', '* ')
  64. basedir = .subdirlist~new(base'samples')
  65. basedir~removeAnyContaining("CVS")
  66. basedir~removeAnyContaining("Projects")
  67. basedir~removeAnyContaining("data")
  68. fl = .stream~new('basedir.icc')
  69. fl~open('Write Replace')
  70. fl~lineout('SRC_DIR = "' || (base)~changestr('', '\') || '"')
  71. fl~lineout('SAMPLES = SRC_DIR "\samples"')
  72. fl~lineout('BASE_DIR = SRC_DIR')
  73. fl~lineout('LIB_DIR = BASE_DIR "\lib"')
  74. fl~lineout('BIN_DIR = BASE_DIR "\bin"')
  75. fl~lineout('')
  76. fl~lineout('group xerces_lib = LIB_DIR "\xerces-c.lib"')
  77. fl~close
  78. cm = .stream~new('bldsamples.cmd')
  79. cm~open('Write Replace')
  80. cm~lineout("@echo off")
  81. DO dir OVER basedir
  82.   thisdir = FileSpec('N', dir)
  83.   grpname = thisdir
  84.   files = .filelist~new(dir || '*.cpp')
  85.   files~removeAnyContaining("CVS")
  86.   IF files~items > 0 THEN
  87.    DO
  88.     fname = grpname || '.icc'
  89.     cm~lineout('echo making' grpname)
  90.     cm~lineout('vacbld' fname)
  91.     fl = .stream~new(fname)
  92.     fl~open('Write Replace')
  93.     fl~lineout('include "basedir.icc"')
  94.     fl~lineout('include "sample_options.icc"')
  95.     fl~lineout('')
  96.     fl~lineout('option sample_options')
  97.     fl~lineout('{')
  98.     fl~lineout('  target BIN_DIR "\' || grpname || '.exe"')
  99.     fl~lineout('  {')
  100.     DO file OVER files
  101.       n = file~pos('samples') + 8
  102.       fileloc = 'SAMPLES "' || file~substr(n)~changestr('', '\') || '"'
  103.       fl~lineout('    source type("cpp")' fileloc)
  104.     END
  105.     fl~lineout('    source type("lib") xerces_lib')
  106.     fl~lineout('  }')
  107.     fl~lineout('}')
  108.     fl~close
  109.    END
  110. END
  111. cm~close
  112. EXIT
  113. /*------------------------------ LoadRexxUtil -------------------------------
  114.  * Load the RexxUtil library
  115.  */
  116. ::routine LoadRexxUtil
  117.   IF RxFuncQuery('SysLoadFuncs') THEN
  118.    DO
  119.     IF RxFuncAdd('SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs') THEN
  120.      DO
  121.       .output~lineout("Error: Couldn't load RexxUtil library.")
  122.       RETURN 1
  123.      END
  124.     CALL SysLoadFuncs
  125.    END
  126.   RETURN 0
  127. /******************************** SubdirList ********************************
  128.  */
  129. ::class SubdirList PUBLIC
  130. ::method init
  131.   EXPOSE !root !dirs
  132.   USE ARG !root
  133.   !dirs = .list~new
  134.   CALL SysFileTree !root'*', 'dirs.', 'DO'
  135.   DO i = 1 TO dirs.0
  136.     !dirs~insert(dirs.i)
  137.   END
  138. ::method basedir
  139.   EXPOSE !root
  140.   RETURN !root
  141. ::method makearray
  142.   EXPOSE !dirs
  143.   RETURN !dirs~makearray
  144. ::method removeAnyContaining
  145.   EXPOSE !dirs
  146.   USE ARG sub
  147.   i = !dirs~first
  148.   DO WHILE i <> .nil
  149.     n = i
  150.     i = !dirs~next(i)
  151.     IF !dirs[n]~pos(sub) <> 0 THEN
  152.      DO
  153.       !dirs~remove(n)
  154.      END
  155.   END
  156. ::method removeAllBut
  157.   EXPOSE !dirs
  158.   USE ARG sub
  159.   DO i = !dirs~first TO !dirs~last
  160.     n = i
  161.     i = !dirs~next(i)
  162.     IF !dirs[n]~pos(sub) = 0 THEN
  163.      DO
  164.       !dirs~remove(n)
  165.      END
  166.   END
  167. /********************************* FileList *********************************
  168.  */
  169. ::class FileList PUBLIC
  170. ::method init
  171.   EXPOSE !pattern !files
  172.   USE ARG !pattern
  173.   !files = .list~new
  174.   CALL SysFileTree !pattern, 'files.', 'FOS'
  175.   DO i = 1 TO files.0
  176.     !files~insert(files.i)
  177.   END
  178. ::method basedir
  179.   EXPOSE !pattern
  180.   RETURN (FileSpec('D', !pattern) || FileSpec('P', !pattern))~strip('T', '')
  181. ::method makearray
  182.   EXPOSE !files
  183.   RETURN !files~makearray
  184. ::method items
  185.   EXPOSE !files
  186.   RETURN !files~items
  187. ::method removeAnyContaining
  188.   EXPOSE !files
  189.   USE ARG sub
  190.   i = !files~first
  191.   DO WHILE i <> .nil
  192.     n = i
  193.     i = !files~next(i)
  194.     IF !files[n]~pos(sub) <> 0 THEN
  195.      DO
  196.       !files~remove(n)
  197.      END
  198.   END
  199. ::method removeAllBut
  200.   EXPOSE !files
  201.   USE ARG sub
  202.   i = !files~first
  203.   DO WHILE i <> .nil
  204.     n = i
  205.     i = !files~next(i)
  206.     IF !files[n]~pos(sub) = 0 THEN
  207.      DO
  208.       !files~remove(n)
  209.      END
  210.   END
  211. ::method merge
  212.   EXPOSE !files
  213.   USE ARG fl
  214.   DO f OVER fl
  215.     !files~insert(f)
  216.   END