ctype Modul

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

 

morszeck

Betreff: ctype Modul

BeitragDi, Feb 08, 2005 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein kleines Beispiel wie man eine Header von C in BMax importieren kann:

Das ganze in die Ordner: ...\mod\pub.mod\ctype.mod\... abspeichern
und im BMax-Editor unter: Programme > Build Modules compilieren lassen.

Unten steht noch ein Beispiel-Programm!

Hier die Erklärung zu den verschiedenen Befehlen:
http://de.wikibooks.org/wiki/C...er#ctype.h

...\BlitzMax\mod\pub.mod\ctype.mod\ctype.bmx
Code: [AUSKLAPPEN]

Rem

Standard CType library functions.

End Rem

Strict

Module Pub.CType

ModuleInfo "Module: ctype Function"
ModuleInfo "Version: 1.00"
ModuleInfo "Author: Morszeck"
ModuleInfo "License: Public Domain"

Import "ctype.c"

Extern "c"

Rem
bbdoc: test for alphanumeric character (a-z,A-Z,0-9)
End Rem
Function isalnum( char_ ) = "isalnum_"

Rem
bbdoc: test for alphabetic character (a-z,A-Z)
End Rem
Function isalpha( char_ ) = "isalpha_"

Rem
bbdoc: test for control character (\n,\t,\f...)
End Rem
Function iscntrl( char_ ) = "iscntrl_"

Rem
bbdoc: test for digit (0-9)
End Rem
Function isdigit( char_ ) = "isdigit_"

Rem
bbdoc: test for graphic character
End Rem
Function isgraph( char_ ) = "isgraph_"

Rem
bbdoc: test for lowercase character (a-z)
End Rem
Function islower( char_ ) = "islower_"

Rem
bbdoc: test for printable character without space
End Rem
Function isprint( char_ ) = "isprint_"

Rem
bbdoc: test for punctuation character
End Rem
Function ispunct( char_ ) = "ispunct_"

Rem
bbdoc: test for space character (space,\f,\n,\t...)
End Rem
Function isspace( char_ ) = "isspace_"

Rem
bbdoc: test for uppercase character (A-Z)
End Rem
Function isupper( char_ ) = "isupper_"

Rem
bbdoc: test for hexadecimal digit (a-f,A-F,0-9)
End Rem
Function isxdigit( char_ ) = "isxdigit_"

End Extern



...\BlitzMax\mod\pub.mod\ctype.mod\ctype.c
Code: [AUSKLAPPEN]
#include <ctype.h>

#define true  1
#define false 0

int isalnum_( int char_ ) {
    return isalnum( char_ ) ? true : false;
}

int isalpha_( int char_ ) {
    return isalpha( char_ ) ? true : false;
}

int iscntrl_( int char_ ) {
    return iscntrl( char_ ) ? true : false;
}

int isdigit_( int char_ ) {
    return isdigit( char_ ) ? true : false;
}

int isgraph_( int char_ ) {
    return isgraph( char_ ) ? true : false;
}

int islower_( int char_ ) {
    return islower( char_ ) ? true : false;
}

int isprint_( int char_ ) {
    return isprint( char_ ) ? true : false;
}

int ispunct_( int char_ ) {
    return ispunct( char_ ) ? true : false;
}

int isspace_( int char_ ) {
    return isspace( char_ ) ? true : false;
}

int isupper_( int char_ ) {
    return isupper( char_ ) ? true : false;
}

int isxdigit_( int char_ ) {
    return isxdigit( char_ ) ? true : false;
}



BEISPIEL:
Code: [AUSKLAPPEN]
x$ = "01aAtT ." +Chr(10) +Chr(9) +Chr(7)

For i=0 Until x.length

   Print Chr$(x[i]) +" ("+ x[i] +")"
   Print "isalnum?  "+ isalnum(x[i])
   Print "isalpha?  "+ isalpha(x[i])
   Print "isdigit?  "+ isdigit(x[i])
   Print "isxdigit? "+ isxdigit(x[i])
   Print "iscntrl?  "+ iscntrl(x[i])
   Print "isgraph?  "+ isgraph(x[i])
   Print "isprint?  "+ isprint(x[i])
   Print "islower?  "+ islower(x[i])
   Print "isupper?  "+ isupper(x[i])
   Print "ispunct?  "+ ispunct(x[i])
   Print "isspace?  "+ isspace(x[i])

Next
 

SiriusMonk

Betreff: CType.h ist aus Mingw 3.0.01 in neues MgW ?

BeitragFr, Mai 16, 2014 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Holla,

so hab mal ein altes MingW (3.0.01) ausgegraben dort ist ein anderer Header- daher nicht kompatible mit aktueller Mingw (4.6.1 ? ) - Gibt es trotzdem eine Möglichkeit diese Funktionen einzubinden ?


Gruss SiriusMonk Smile

DAK

BeitragFr, Mai 16, 2014 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schaut dein Header-File aus? Mit deinen Infos kann ich nur eine Münze befragen.
Gewinner der 6. und der 68. BlitzCodeCompo

Thunder

BeitragFr, Mai 16, 2014 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
1. wäre das dann ein guter Zeitpunkt zum Updaten Wink MinGW 3 dürfte schon relativ alt sein...

2. Dass deine Header-Datei "inkompatibel" ist, ist eher unwahrscheinlich, weil die hier gebrauchte Datei ctype.h schon im C89/90 Standard drinnen steht (also 1989/1990 den C-Compiler-Machern "vorgeschrieben" wurde).
Aber wie DAK schon sagte: Wir können dir ohne weitere Informationen nicht helfen.
 

SiriusMonk

BeitragSa, Mai 17, 2014 8:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo , danke für die Antworten bei dem alten Thema - also 1. Missverständnis : die Header-Dateien aus dem alten Mingw sind ältere ( wie Thunder schon schrieb) , Ich selbst hab eine relative neue MingW - Installation : (Blitzmax 1.50)

gcc version 4.6.1 (GCC)
gcc version 4.6.1 (GCC)
GNU gdb (GDB) 7.4
GNU ld (GNU Binutils) 2.21.1
GNU windres (GNU Binutils) 2.21.1
GNU dlltool (GNU Binutils) 2.21.1
GNU Make 3.82

Und es taucht halt eine Fenster beim Rebuild auf : GCC Error: error - und verweist dann in die CType.c - Datei und der Cursor hängt beim #Include <CType.h> fest , bzw kann den Header nicht finden . Die CType.h - Datei befindet ist in Mingw (Include)-Verzeichnis und die ist halt anders aufgebaut, als die Version von Mingw (3.001), die mutmaßlich genutzt wurde zum Zeitpunkt der Erstellung diese Beitrages (also von morszeck/ 2005). Daher meine Überlegungen, ob sich die Header-Dateien im GCC- Complier soweit geändert haben, das man mit diesem Beitrag nichts mehr anfangen kann - aber halt vielleicht auch nicht, wenn man einen Plan hat Smile - Also Danke erstmal für euere Mühe -

Thunder

BeitragSa, Mai 17, 2014 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht ganz... du hast ein neues MinGW, verwendest aber die alten Header?
Wenn ja: Das ist nicht sinnvoll.
Wenn nein: Missverständnis, sorry.

Habe jetzt das Modul bei mir gebaut, einfach komplett nach Anleitung wie im Beitrag des Erstellers und es funktioniert. Diese Funktionen sind Teil des C-Standards und werden nicht entfernt und an der Schnittstelle wird auch nichts geändert.
Deswegen wäre es gut, wenn du den ganzen Log posten könntest. Was dir gcc alles schreibt und so... dann können wir drauf eingehen. Da ich den Fehler nicht reproduzieren kann, kann ich dir immer noch nicht helfen.

Ah, was mir in dem Moment auffällt: Sieh Mal nach, ob in deiner ctype.c das #include groß geschrieben ist (ist in deinem letzten Beitrag zumindest so: #Include ..).
In C ist es nicht egal, ob du etwas groß- oder kleinschreibst!
Bei dem Dateinamen CType.h müsste es egal sein, aber im Prinzip wird der Dateiname ebenfalls kleingeschrieben.
 

SiriusMonk

BeitragSa, Mai 17, 2014 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich bin immer wieder über die Antwortzeit erstaunt, zu deiner Frage , ich hatte es mit einer alten Version (3.001) versucht bzw verglichen daher meine mutmaßung - ... Ich hab aktuelll die Mingw 4.61 installliert - Interessant wäre es zu erfahren was bei dir läuft ? - Ich hab es grade eben nochmal nach dieser Anleitung gemacht und es endet mit einem kleinem Fenster "GCC Error" und einem umgedrehten Ausrufezeichen und der nichtsagenden Meldung error . Dann öffnet sich ctype.c und Cursor in der ersten Zeile- gibt es noch andere Logs ? Wenn ja , wo ?

( Blitzmax 1.50, Win 7 Sp 1 Home Premium MaxIDE CE, Flat Compiler 1.69.14 )

Gruss SiriusMonk Smile


P.S. das mit include ist natürlich klein ... Smile - es ist schließlich C++ Smile

P.S.S: so hab es nachdem die Compilierung mit Rebuild schief läuft , mal aus Spass das Example compiliert mit folgendem Ergebenis :
Code: [AUSKLAPPEN]

"Linking:untitled1.debug.exe
C:/BlitzMax/tmp/.bmx/untitled1.bmx.gui.debug.win32.x86.o:(code+0x2c5): undefined reference to `isxdigit_'
C:/BlitzMax/tmp/.bmx/untitled1.bmx.gui.debug.win32.x86.o:(code+0x44b): undefined reference to `isupper_'
C:/BlitzMax/tmp/.bmx/untitled1.bmx.gui.debug.win32.x86.o:(code+0x499): undefined reference to `ispunct_'
C:/BlitzMax/tmp/.bmx/untitled1.bmx.gui.debug.win32.x86.o:(code+0x4e7): undefined reference to `isspace_'
Build Error: Failed to link C:/BlitzMax/tmp/untitled1.debug.exe
Process complete"


Vielleicht hilft das weiter Smile ?

P.S.S Hab jetzt mal das tmp Verzeichnis gelöscht und rebuild ohne Fehlermeldung :-)freu
Die Fehlermeldung beim kompilieren des Examples bleibt, aber leider Sad

Hab's grade mit einer frischen Blitzmax 1.50 V. probiert und nur die Ctype - Mod reingepackt - und die gleiche Fehlermeldung bei den Examples Sad
  • Zuletzt bearbeitet von SiriusMonk am Sa, Mai 17, 2014 22:21, insgesamt 3-mal bearbeitet

DAK

BeitragSa, Mai 17, 2014 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du schreibst, du verwendest eine andere ctype.h. Kannst du die mal bitte posten? Ist es eventuell möglich, weil du sagst, sie ist anders aufgebaut als die Originale, dass sie nicht mehr mit der ctype.c konform läuft?

Poste bitte sowohl die ctype.h als auch die ctype.c, die du verwendest.
Gewinner der 6. und der 68. BlitzCodeCompo
 

SiriusMonk

BeitragSa, Mai 17, 2014 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie gewünscht Smile - Danke für die Hilfe Smile

Die Ctype.c ist die hier aus dem Mod von morszeck die Ctype.h aus der aktuell installierten Mingw 4.6.1. Version:


Code: [AUSKLAPPEN]
/*
 * ctype.h
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is a part of the mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within the package.
 *
 * Functions for testing character types and converting characters.
 *
 */

#ifndef _CTYPE_H_
#define _CTYPE_H_

/* All the headers include this file. */
#include <_mingw.h>

#define   __need_wchar_t
#define   __need_wint_t
#ifndef RC_INVOKED
#include <stddef.h>
#endif   /* Not RC_INVOKED */


/*
 * The following flags are used to tell iswctype and _isctype what character
 * types you are looking for.
 */
#define   _UPPER      0x0001
#define   _LOWER      0x0002
#define   _DIGIT      0x0004
#define   _SPACE      0x0008 /* HT  LF  VT  FF  CR  SP */
#define   _PUNCT      0x0010
#define   _CONTROL   0x0020
/* _BLANK is set for SP and non-ASCII horizontal space chars (eg,
   "no-break space", 0xA0, in CP1250) but not for HT.  */
#define   _BLANK      0x0040
#define   _HEX      0x0080
#define   _LEADBYTE   0x8000

#define   _ALPHA      0x0103

#ifndef RC_INVOKED

#ifdef __cplusplus
extern "C" {
#endif

_CRTIMP int __cdecl __MINGW_NOTHROW isalnum(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isalpha(int);
_CRTIMP int __cdecl __MINGW_NOTHROW iscntrl(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isdigit(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isgraph(int);
_CRTIMP int __cdecl __MINGW_NOTHROW islower(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isprint(int);
_CRTIMP int __cdecl __MINGW_NOTHROW ispunct(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isspace(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isupper(int);
_CRTIMP int __cdecl __MINGW_NOTHROW isxdigit(int);

#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
     || !defined __STRICT_ANSI__
int __cdecl __MINGW_NOTHROW isblank (int);
#endif

#ifndef __STRICT_ANSI__
_CRTIMP int __cdecl __MINGW_NOTHROW _isctype (int, int);
#endif

/* These are the ANSI versions, with correct checking of argument */
_CRTIMP int __cdecl __MINGW_NOTHROW tolower(int);
_CRTIMP int __cdecl __MINGW_NOTHROW toupper(int);

/*
 * NOTE: The above are not old name type wrappers, but functions exported
 * explicitly by MSVCRT/CRTDLL. However, underscored versions are also
 * exported.
 */
#ifndef   __STRICT_ANSI__
/*
 *  These are the cheap non-std versions: The return values are undefined
 *  if the argument is not ASCII char or is not of appropriate case
 */
_CRTIMP int __cdecl __MINGW_NOTHROW _tolower(int);
_CRTIMP int __cdecl __MINGW_NOTHROW _toupper(int);
#endif

/* Also defined in stdlib.h */
#ifndef MB_CUR_MAX
#ifdef __DECLSPEC_SUPPORTED
# ifdef __MSVCRT__
#  define MB_CUR_MAX __mb_cur_max
   __MINGW_IMPORT int __mb_cur_max;
# else   /* not __MSVCRT */
#  define MB_CUR_MAX __mb_cur_max_dll
   __MINGW_IMPORT int __mb_cur_max_dll;
# endif   /* not __MSVCRT */

#else      /* ! __DECLSPEC_SUPPORTED */
# ifdef __MSVCRT__
   extern int* _imp____mb_cur_max;
#  define MB_CUR_MAX (*_imp____mb_cur_max)
# else      /* not __MSVCRT */
   extern int*  _imp____mb_cur_max_dll;
#  define MB_CUR_MAX (*_imp____mb_cur_max_dll)
# endif    /* not __MSVCRT */
#endif     /*  __DECLSPEC_SUPPORTED */
#endif  /* MB_CUR_MAX */


#ifdef __DECLSPEC_SUPPORTED
# if __MSVCRT_VERSION__ <= 0x0700
  __MINGW_IMPORT unsigned short _ctype[];
# endif
# ifdef __MSVCRT__
  __MINGW_IMPORT unsigned short* _pctype;
# else /* CRTDLL */
  __MINGW_IMPORT unsigned short* _pctype_dll;
# define  _pctype _pctype_dll
# endif

#else      /*  __DECLSPEC_SUPPORTED */
# if __MSVCRT_VERSION__ <= 0x0700
  extern unsigned short** _imp___ctype;
# define _ctype (*_imp___ctype)
# endif
# ifdef __MSVCRT__
  extern unsigned short** _imp___pctype;
# define _pctype (*_imp___pctype)
# else /* CRTDLL */
  extern unsigned short** _imp___pctype_dll;
# define _pctype (*_imp___pctype_dll)
# endif /* CRTDLL */
#endif      /*  __DECLSPEC_SUPPORTED */

/*
 * Use inlines here rather than macros, because macros will upset
 * C++ usage (eg, ::isalnum), and so usually get undefined
 *
 * According to standard for SB chars, these function are defined only
 * for input values representable by unsigned char or EOF.
 * Thus, there is no range test.
 * This reproduces behaviour of MSVCRT.dll lib implemention for SB chars.
 *
 * If no MB char support is needed, these can be simplified even
 * more by command line define -DMB_CUR_MAX=1.  The compiler will then
 * optimise away the constant condition.         
 */

#if !(defined (__NO_INLINE__)  || defined (__NO_CTYPE_INLINES) \
   || defined (__STRICT_ANSI__))

/* use  simple lookup if SB locale, else  _isctype()  */
#define __ISCTYPE(c, mask)  (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype(c, mask))
__CRT_INLINE int __cdecl __MINGW_NOTHROW isalnum(int c) {return __ISCTYPE(c, (_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isalpha(int c) {return __ISCTYPE(c, _ALPHA);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iscntrl(int c) {return __ISCTYPE(c, _CONTROL);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isdigit(int c) {return __ISCTYPE(c, _DIGIT);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isgraph(int c) {return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW islower(int c) {return __ISCTYPE(c, _LOWER);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isprint(int c) {return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW ispunct(int c) {return __ISCTYPE(c, _PUNCT);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isspace(int c) {return __ISCTYPE(c, _SPACE);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isupper(int c) {return __ISCTYPE(c, _UPPER);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isxdigit(int c) {return __ISCTYPE(c, _HEX);}

#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
     || !defined __STRICT_ANSI__
__CRT_INLINE int __cdecl __MINGW_NOTHROW isblank (int c)
  {return (__ISCTYPE(c, _BLANK) || c == '\t');}
#endif

/* these reproduce behaviour of lib underscored versions  */
__CRT_INLINE int __cdecl __MINGW_NOTHROW _tolower(int c) {return ( c -'A'+'a');}
__CRT_INLINE int __cdecl __MINGW_NOTHROW _toupper(int c) {return ( c -'a'+'A');}

/* TODO? Is it worth inlining ANSI tolower, toupper? Probably only
   if we only want C-locale. */

#endif /* _NO_CTYPE_INLINES */

/* Wide character equivalents */

#ifndef WEOF
#define   WEOF   (wchar_t)(0xFFFF)
#endif

#ifndef _WCTYPE_T_DEFINED
typedef wchar_t wctype_t;
#define _WCTYPE_T_DEFINED
#endif

_CRTIMP int __cdecl __MINGW_NOTHROW iswalnum(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswalpha(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswascii(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswcntrl(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswctype(wint_t, wctype_t);
_CRTIMP int __cdecl __MINGW_NOTHROW is_wctype(wint_t, wctype_t);   /* Obsolete! */
_CRTIMP int __cdecl __MINGW_NOTHROW iswdigit(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswgraph(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswlower(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswprint(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswpunct(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswspace(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswupper(wint_t);
_CRTIMP int __cdecl __MINGW_NOTHROW iswxdigit(wint_t);

#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
     || !defined __STRICT_ANSI__ || defined __cplusplus
int __cdecl __MINGW_NOTHROW iswblank (wint_t);
#endif

/* Older MS docs uses wchar_t for arg and return type, while newer
   online MS docs say arg is wint_t and return is int.
   ISO C uses wint_t for both.  */
_CRTIMP wint_t __cdecl __MINGW_NOTHROW towlower (wint_t);
_CRTIMP wint_t __cdecl __MINGW_NOTHROW towupper (wint_t);

_CRTIMP int __cdecl __MINGW_NOTHROW isleadbyte (int);

/* Also in wctype.h */
#if ! (defined (__NO_INLINE__) || defined(__NO_CTYPE_INLINES) \
       || defined(__WCTYPE_INLINES_DEFINED))
#define __WCTYPE_INLINES_DEFINED
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswascii(wint_t wc) {return ((wc & ~0x7F) ==0);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
     || !defined __STRICT_ANSI__ || defined __cplusplus
__CRT_INLINE int __cdecl __MINGW_NOTHROW iswblank (wint_t wc)
  {return (iswctype(wc,_BLANK) || wc == L'\t');}
#endif

#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */

#ifndef   __STRICT_ANSI__
int __cdecl __MINGW_NOTHROW __isascii (int);
int __cdecl __MINGW_NOTHROW __toascii (int);
int __cdecl __MINGW_NOTHROW __iscsymf (int);      /* Valid first character in C symbol */
int __cdecl __MINGW_NOTHROW __iscsym (int);      /* Valid character in C symbol (after first) */

#if !(defined (__NO_INLINE__) || defined (__NO_CTYPE_INLINES))
__CRT_INLINE int __cdecl __MINGW_NOTHROW __isascii(int c) {return ((c & ~0x7F) == 0);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW __toascii(int c) {return (c & 0x7F);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsymf(int c) {return (isalpha(c) || (c == '_'));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsym(int c)  {return  (isalnum(c) || (c == '_'));}
#endif /* __NO_CTYPE_INLINES */

#ifndef   _NO_OLDNAMES
/* Not _CRTIMP */
int __cdecl __MINGW_NOTHROW isascii (int);
int __cdecl __MINGW_NOTHROW toascii (int);
int __cdecl __MINGW_NOTHROW iscsymf (int);
int __cdecl __MINGW_NOTHROW iscsym (int);
#endif   /* Not _NO_OLDNAMES */

#endif   /* Not __STRICT_ANSI__ */

#ifdef __cplusplus
}
#endif

#endif   /* Not RC_INVOKED */

#endif   /* Not _CTYPE_H_ */

  • Zuletzt bearbeitet von SiriusMonk am Sa, Mai 17, 2014 22:21, insgesamt 2-mal bearbeitet
 

SiriusMonk

BeitragSa, Mai 17, 2014 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann auch gelöscht werden, hab's versucht von Unterwegs zu editieren, das ging ja wohl in die Hose - sorry Smile
  • Zuletzt bearbeitet von SiriusMonk am Sa, Mai 17, 2014 22:13, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSa, Mai 17, 2014 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte Editiere deinen Post nach anstatt doppelt zu posten. Und das Zitat ist auch unnötig.
Danke.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Thunder

BeitragMi, Mai 21, 2014 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich weiß ehrlich gesagt nicht, was da bei dir passiert, aber im Prinzip ist die C-Datei (nicht C++ Wink ), die dem Modul mitgeliefert wird, ziemlich unnötig. Wenn man die nötigen Änderungen macht, funktioniert also auch alles ohne gcc, theoretisch jedenfalls (bei mir klappts - aber siehe unten).
Probiere Mal diese ctype.bmx:
BlitzMax: [AUSKLAPPEN]

Rem

Standard CType library functions.

End Rem


Strict

Module Pub.CType

ModuleInfo "Module: ctype Function"
ModuleInfo "Version: 1.00"
ModuleInfo "Author: Morszeck"
ModuleInfo "License: Public Domain"


Extern "c"

Rem
bbdoc: test for alphanumeric character (a-z,A-Z,0-9)
End Rem

Function isalnum( char ) = "isalnum"

Rem
bbdoc: test for alphabetic character (a-z,A-Z)
End Rem

Function isalpha( char ) = "isalpha"

Rem
bbdoc: test for control character (\n,\t,\f...)
End Rem

Function iscntrl( char ) = "iscntrl"

Rem
bbdoc: test for digit (0-9)
End Rem

Function isdigit( char ) = "isdigit"

Rem
bbdoc: test for graphic character
End Rem

Function isgraph( char ) = "isgraph"

Rem
bbdoc: test for lowercase character (a-z)
End Rem

Function islower( char ) = "islower"

Rem
bbdoc: test for printable character without space
End Rem

Function isprint( char ) = "isprint"

Rem
bbdoc: test for punctuation character
End Rem

Function ispunct( char ) = "ispunct"

Rem
bbdoc: test for space character (space,\f,\n,\t...)
End Rem

Function isspace( char ) = "isspace"

Rem
bbdoc: test for uppercase character (A-Z)
End Rem

Function isupper( char ) = "isupper"

Rem
bbdoc: test for hexadecimal digit (a-f,A-F,0-9)
End Rem

Function isxdigit( char ) = "isxdigit"

End Extern


Änderungen:
- Kein Import der C-Datei mehr
- Alle Unterstriche aus dem Programm entfernt

Wenn der Linker die ctype-Funktionen bei der in die exe-Datei einlinkt, müsste jetzt alles funktionieren. Wenn es immer noch nicht geht, ist das - denke ich - ein Zeichen dafür, dass irgendwas mit den Libraries in deinem MinGW nicht stimmt oder so...
Hoffe das geht jetzt.

Übrigens könntest du im Zweifelsfall noch probieren nicht aus der IDE zu kompilieren, sondern per Kommandozeile. Also in BlitzMax\bin "bmk makemods -a pub.ctype" ausführen Wink

Viel Erfolg
 

SiriusMonk

BeitragMi, Mai 21, 2014 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Thunder ,

Vielen Dank ! Ich hab's sofort ausprobiert und es funktioniert ohne Fehlermeldung etc. Ich hab immer noch die MingW-Installation im Verdacht, aber jetzt funzt es ja erstmal .... - dann kann ich jetzt weitermachen, ich brauchte nämlich die lower-Funktion ... Smile

Schönen Gruss
SiriusMonk

Thunder

BeitragDo, Mai 22, 2014 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich dass es funktioniert hat, aber den Aufwand/die Zeit hättest du dir für die eine Funktion sparen können Razz

BlitzMax: [AUSKLAPPEN]
Function islower(x)
Return x >= Asc"a" And x <= Asc"z"
EndFunction
 

SiriusMonk

BeitragSo, Mai 25, 2014 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, die Asc Funktion hatte ich gar nicht auf dem Schirm - naja jetzt kann ich sie ja nutzen Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group