home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE Includes(VAR Line : Line_Type;
- VAR Include_file_present : BOOLEAN;
- VAR Include_file_name : Filename_Type);
- {
- Include_file_present is TRUE if an Include compiler directive is in
- the line. It also must be flush with the comment bracket to be recognized;
- thus, if an include takes the following form, { $I filename.ext..., it will be
- neither included during a compilation nor during a listing with this program.
- It was lifted and modified from program: LISTER.PAS, supplied by Borland. It
- must be called before the line is "processed" so that the string flag
- represents a continuing string before the line. I. e., the include directive
- is not recognized if it is within a string definition.
- }
-
- VAR
- Name_start, Name_end : INTEGER;
-
- BEGIN
- Ch := '-';
- Dummy := POS('{$I', Line);
- IF Dummy <> 0 THEN
- BEGIN
- Name_start := Dummy + 3;
- Ch := Line[Name_start];
- END
- ELSE
- BEGIN
- Dummy := POS('(*$I', Line);
- IF Dummy <> 0 THEN
- BEGIN
- Name_start := Dummy + 4;
- Ch := Line[Name_start];
- END
- ELSE
- BEGIN
- Dummy := POS('{$i', Line);
- IF Dummy <> 0 THEN
- BEGIN
- Name_start := Dummy + 3;
- Ch := Line[Name_start];
- END
- ELSE
- BEGIN
- Dummy := POS('(*$i', Line);
- IF Dummy <> 0 THEN
- BEGIN
- Name_start := Dummy + 4;
- Ch := Line[Name_start];
- END;
- END;
- END;
- END;
- Include_file_present := NOT (Ch IN ['+', '-']);
- FOR I := 1 TO Dummy - 1 DO
- IF Line[I] = '''' THEN Include_file_present := NOT Include_file_present;
- IF Strng THEN Include_file_present := NOT Include_file_present;
-
- IF Include_file_present THEN
- BEGIN
- {
- This section parses for a filename within the line, following the include
- directive. It was lifted from program: LISTER.PAS, supplied by Borland.
- }
- WHILE Line[Name_start] = ' ' DO
- Name_start := SUCC(Name_start);
- Name_end := Name_start;
- WHILE (NOT (Line[Name_end] IN [' ', '}', '*']))
- AND ((Name_end - Name_start) <= Filename_Length) DO
- Name_end := SUCC(Name_end);
- Name_end := PRED(Name_end);
- Include_file_name := COPY(Line, Name_start, (Name_end - Name_start + 1));
- END;
- END;