home *** CD-ROM | disk | FTP | other *** search
- ;/* execute me to compile with SAS/C (note: CPU option has (nearly) no effect here!)
- ;SC C-include.c IGNORE 73 DEBUG=SYMBOLFLUSH STRINGMERGE NOSTKCHK LINK
- SC C-include.c IGNORE 73 OPT OPTTIME STRINGMERGE NOSTKCHK
- SLink FROM C-include.o TO C-include SC SD STRIPDEBUG NOICONS
- Delete C-include.(o|lnk) QUIET
- QUIT
- */
- /**************************************************************************
-
- C-include.c -- GoldED4-Scanner für C/C++ #include
-
- AUTOR(EN): Thies Wellpott
- ERSTELLUNG: 22.05.1997
- COPYRIGHT: (c) 1997 Thies Wellpott
- BETRIEBSSYSTEM: AmigaOS
- COMPILER: SAS/C 6.58
-
- BESCHREIBUNG:
-
- Scanner für GoldED Version 4.
- Übergabeparameter:
- - ULONG len Länge der aktuellen Textzeile
- - STRPTR *text Zeiger auf aktuelle Textzeile
- - ULONG *line Zeiger auf aktuelle Zeilennummer
- Rückgabewerte:
- - ULONG return Länge des gescannten Textes oder 0 für keinen Text
- - STRPTR *text Zeiger auf Text
-
- Sucht #include. Das Schlüsselwort muß vollständig klein geschrieben sein
- (Def. von ANSI-C). Leerzeichen davor sind erlaubt.
- Angezeigt wird der Dateiname zwischen ".." und <..>.
-
-
- FEHLER/EINSCHRÄNKUNGEN:
-
- - Kommentare sind nur am Ende der Zeile erlaubt
-
-
- ENTWICKLUNGSGESCHICHTE:
-
- V1.000 22.05.1997 Thies Wellpott
- - erste Version
-
- V1.001 15.04.1998 Thies Wellpott
- - allgemeine Scanner-Headerdatei verwendet
- - 68020 compiliert
-
- **************************************************************************/
-
- #include "twscanner.h"
-
-
-
- ULONG __asm golded_scanner(register __d0 ULONG len, register __a0 STRPTR *text,
- register __a1 ULONG *line)
- {
- const char *version = "\0$VER: C-include 1.1 " __AMIGADATE__;
- // hier unnötig: Stringkonstante (in Code-Hunk) als Puffer mißbrauchen
- // STRPTR puffer = "123456789012345678901234567890123456789012345678901234567890";
- //#define PUFFERLAENGE 60
- STRPTR zeichen = *text;
-
- // führende Leerzeichen ignorieren
- SKIPBLANKS(zeichen, len);
-
- // mind. "#include <a>"
- if (len >= 12)
- {
- if ( STRCMP4(zeichen, '#', 'i', 'n', 'c') && STRCMP4(zeichen, 'l', 'u', 'd', 'e') && ISBLANK(*zeichen) )
- {
- zeichen++;
- len -= 9;
- SKIPBLANKS(zeichen, len);
-
- if ( (*zeichen == '"') || (*zeichen == '<') )
- {
- unsigned short laenge; // braucht kein ULONG zu sein
-
- zeichen++;
- len--;
-
- // Text direkt aus Zeile nehmen
- *text = zeichen;
- laenge = 0;
- while ( len && (*zeichen != '"') && (*zeichen != '>') )
- {
- zeichen++;
- laenge++;
- len--;
- } // while
-
- return laenge;
- } // if ('"' || '<')
- } // if ("#include")
- } // if (len >= 12)
-
- return 0;
- } // golded_scanner()
-
-
- /**
- #include <string.h>
-
- int main(int argc, char *argv[])
- {
- char text[128], *erg, laenge;
-
- strcpy(text, " #include >asd< q");
- erg = text;
- laenge = golded_scanner(strlen(text)-1, &erg, 0);
- erg[laenge] = 0;
-
- strcpy(text, "#include \"dfgh/qwer.h\"q");
- erg = text;
- laenge = golded_scanner(strlen(text)-1, &erg, 0);
- erg[laenge] = 0;
-
- strcpy(text, " #include <asdf/qwer/yxcv.h>q");
- erg = text;
- laenge = golded_scanner(strlen(text)-1, &erg, 0);
- erg[laenge] = 0;
-
- strcpy(text, "#include \"hallo>q");
- erg = text;
- laenge = golded_scanner(strlen(text)-1, &erg, 0);
- erg[laenge] = 0;
-
- return 0;
- } // main()
- **/
-
-