home *** CD-ROM | disk | FTP | other *** search
/ Ray Tracing Box / RAY_CD.mdf / raytrace / cullar / cull.bas next >
BASIC Source File  |  1993-03-28  |  4KB  |  182 lines

  1. DECLARE SUB usage ()
  2. DEFINT A-Z
  3. DIM lib$(16), decl$(1000), true(1000), written(1000)
  4. c$ = COMMAND$
  5. IF c$ = "" THEN usage
  6. args = 1
  7. c = 1
  8. DO
  9.  d = INSTR(c, c$, " ")
  10.  IF d = 0 THEN d = LEN(c$)
  11.  cm$(args) = RTRIM$(UCASE$(MID$(c$, c, d - c + 1)))
  12.  args = args + 1
  13.  c = INSTR(c, c$, " ") + 1
  14.  IF c = 1 THEN EXIT DO
  15. LOOP
  16. FOR i = 1 TO args
  17.  l$ = LEFT$(cm$(i) + "  ", 2)
  18.  IF RIGHT$("   " + cm$(i), 4) = ".POV" THEN c1$ = cm$(i)
  19.  IF RIGHT$("   " + cm$(i), 4) = ".INC" THEN c2$ = cm$(i)
  20. NEXT i
  21. IF c1$ = "" OR c2$ = "" THEN usage
  22. CLS
  23. ON ERROR GOTO wrong:
  24. OPEN c1$ FOR INPUT AS #1
  25. ON ERROR GOTO 0
  26. DO
  27.  LINE INPUT #1, l$
  28.  i = INSTR(1, l$, "#include")
  29.  IF i <> 0 THEN
  30.   j = INSTR(i + 9, l$, CHR$(34))
  31.   k = INSTR(j + 1, l$, CHR$(34))
  32.   IF j <> 0 AND k <> 0 THEN
  33.    lb$ = LTRIM$(RTRIM$(UCASE$(MID$(l$, j + 1, k - j - 1))))
  34.    IF (INSTR(1, c2$, lb$) = 0) AND (INSTR(1, c2$, lb$) = 0) THEN
  35.     libs = libs + 1
  36.     lib$(libs) = lb$
  37.    END IF
  38.   END IF
  39.  END IF
  40. LOOP UNTIL EOF(1)
  41. CLOSE #1
  42. FOR k = 1 TO libs
  43.  ON ERROR GOTO wrong:
  44.  OPEN lib$(k) FOR INPUT AS #1
  45.  ON ERROR GOTO 0
  46.  DO
  47.   LINE INPUT #1, l$
  48.   i = INSTR(1, l$, "#declare")
  49.   IF i <> 0 THEN
  50.    decs = decs + 1
  51.    j = INSTR(i + 9, l$, " ")
  52.    IF j = 0 THEN
  53.     decl$(decs) = MID$(l$, i + 9)
  54.    ELSE
  55.     decl$(decs) = MID$(l$, i + 9, j - i - 9)
  56.    END IF
  57.   END IF
  58.  LOOP UNTIL EOF(1)
  59.  CLOSE #1
  60. NEXT k
  61. ON ERROR GOTO wrong:
  62. OPEN c1$ FOR INPUT AS #1
  63. ON ERROR GOTO 0
  64. DO
  65.  LINE INPUT #1, l$
  66.  FOR k = 1 TO decs
  67.   i = INSTR(1, l$, decl$(k))
  68.   IF i <> 0 THEN
  69.    j = INSTR(i, l$, " ")
  70.    IF j = 0 THEN
  71.     d$ = MID$(l$, i)
  72.    ELSE
  73.     d$ = MID$(l$, i, j - i)
  74.    END IF
  75.    IF d$ = decl$(k) THEN true(k) = -1
  76.   END IF
  77.  NEXT k
  78. LOOP UNTIL EOF(1)
  79. CLOSE #1
  80. OPEN "culled.inc" FOR OUTPUT AS #1
  81. FOR k = 1 TO libs
  82.  OPEN lib$(k) FOR INPUT AS #2
  83.  DO
  84.   LINE INPUT #2, l$
  85.   i = INSTR(1, l$, "#declare")
  86.   IF i <> 0 THEN
  87.    j = INSTR(i + 9, l$, " ")
  88.    IF j = 0 THEN
  89.     d$ = MID$(l$, i + 9)
  90.    ELSE
  91.     d$ = MID$(l$, i + 9, j - i - 9)
  92.    END IF
  93.    FOR j = 1 TO decs
  94.     IF true(j) AND d$ = decl$(j) THEN
  95.      written(j) = -1
  96.      PRINT #1, l$
  97.      DO
  98.       LINE INPUT #2, l$
  99.       IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
  100.       PRINT #1, l$
  101.       IF l$ = "" THEN EXIT DO
  102.      LOOP
  103.     END IF
  104.    NEXT j
  105.   END IF
  106.  LOOP UNTIL EOF(2)
  107.  CLOSE #2
  108. NEXT k
  109. CLOSE #1
  110. lt = -1
  111. DO
  112.  OPEN "culled.inc" FOR INPUT AS #1
  113.  lines = 0
  114.  DO
  115.   LINE INPUT #1, l$
  116.   lines = lines + 1
  117.   FOR k = 1 TO decs
  118.    i = INSTR(1, l$, decl$(k))
  119.    IF i <> 0 THEN
  120.     j = INSTR(i, l$, " ")
  121.     IF j = 0 THEN
  122.      d$ = MID$(l$, i)
  123.     ELSE
  124.      d$ = MID$(l$, i, j - i)
  125.     END IF
  126.     IF d$ = decl$(k) THEN true(k) = -1
  127.    END IF
  128.   NEXT k
  129.  LOOP UNTIL EOF(1)
  130.  CLOSE #1
  131.  IF lines = lt THEN EXIT DO
  132.  lt = lines
  133.  OPEN "culled.inc" FOR OUTPUT AS #1
  134.  FOR k = 1 TO libs
  135.   OPEN lib$(k) FOR INPUT AS #2
  136.   DO
  137.    LINE INPUT #2, l$
  138.    i = INSTR(1, l$, "#declare")
  139.    IF i <> 0 THEN
  140.     j = INSTR(i + 9, l$, " ")
  141.     IF j = 0 THEN
  142.      d$ = MID$(l$, i + 9)
  143.     ELSE
  144.      d$ = MID$(l$, i + 9, j - i - 9)
  145.     END IF
  146.     FOR j = 1 TO decs
  147.      IF true(j) AND d$ = decl$(j) THEN
  148.       written(j) = -1
  149.       PRINT #1, l$
  150.       DO
  151.        LINE INPUT #2, l$
  152.        IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
  153.        PRINT #1, l$
  154.        IF l$ = "" THEN EXIT DO
  155.       LOOP
  156.      END IF
  157.     NEXT j
  158.    END IF
  159.   LOOP UNTIL EOF(2)
  160.   CLOSE #2
  161.  NEXT k
  162.  CLOSE #1
  163. LOOP
  164. CLOSE #1
  165. END
  166. wrong:
  167.  PRINT "File error"
  168.  CLOSE #1
  169.  CLOSE #2
  170.  END
  171.  
  172. DEFSNG A-Z
  173. SUB usage
  174.  PRINT
  175.  PRINT "CULL:"
  176.  PRINT
  177.  PRINT "Usage: CULL infile.POV outfile.INC"
  178.  PRINT
  179.  END
  180. END SUB
  181.  
  182.