diff options
-rw-r--r-- | apps/interpreters/bas/auto.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/bas.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/config.h | 3 | ||||
-rw-r--r-- | apps/interpreters/bas/fs.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/global.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/main.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/statement.c | 5 | ||||
-rw-r--r-- | apps/interpreters/bas/str.c | 497 | ||||
-rw-r--r-- | apps/interpreters/bas/token.c | 5 | ||||
-rw-r--r-- | apps/interpreters/bas/value.c | 4 | ||||
-rw-r--r-- | apps/interpreters/bas/var.c | 4 |
11 files changed, 346 insertions, 192 deletions
diff --git a/apps/interpreters/bas/auto.c b/apps/interpreters/bas/auto.c index 7f0a70eb6..2de1dd16b 100644 --- a/apps/interpreters/bas/auto.c +++ b/apps/interpreters/bas/auto.c @@ -81,10 +81,6 @@ #include "auto.h" -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/apps/interpreters/bas/bas.c b/apps/interpreters/bas/bas.c index e43f918dc..84f3516f2 100644 --- a/apps/interpreters/bas/bas.c +++ b/apps/interpreters/bas/bas.c @@ -36,10 +36,6 @@ #include "value.h" #include "var.h" -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/apps/interpreters/bas/config.h b/apps/interpreters/bas/config.h index d0f11b3eb..7912f4d67 100644 --- a/apps/interpreters/bas/config.h +++ b/apps/interpreters/bas/config.h @@ -26,9 +26,6 @@ /* What does tputs return? */ /* #undef TPUTS_RETURNS_VOID */ -/* Define as 1 if you use dmalloc. */ -/* #undef USE_DMALLOC */ - /* Define as 1 if you want LR0 parser. */ /* #undef USE_LR0 */ diff --git a/apps/interpreters/bas/fs.c b/apps/interpreters/bas/fs.c index 1800cfddc..56bee2dae 100644 --- a/apps/interpreters/bas/fs.c +++ b/apps/interpreters/bas/fs.c @@ -93,10 +93,6 @@ #include "fs.h" -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/apps/interpreters/bas/global.c b/apps/interpreters/bas/global.c index ef8cc0c64..cb6ead7a7 100644 --- a/apps/interpreters/bas/global.c +++ b/apps/interpreters/bas/global.c @@ -28,10 +28,6 @@ #include "global.h" #include "var.h" -#ifdef USE_DMALLOC -#include "dmalloc.h" -#endif - #include <nuttx/clock.h> #ifndef M_PI diff --git a/apps/interpreters/bas/main.c b/apps/interpreters/bas/main.c index 64f423624..7a0f95ee4 100644 --- a/apps/interpreters/bas/main.c +++ b/apps/interpreters/bas/main.c @@ -80,10 +80,6 @@ #include <string.h> #include <stdlib.h> -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - #include "bas.h" /**************************************************************************** diff --git a/apps/interpreters/bas/statement.c b/apps/interpreters/bas/statement.c index bef45c081..3f413c74d 100644 --- a/apps/interpreters/bas/statement.c +++ b/apps/interpreters/bas/statement.c @@ -10,11 +10,6 @@ #include "statement.h" -#ifdef USE_DMALLOC -#include "dmalloc.h" -#endif - - struct Value *stmt_CALL(struct Value *value) { ++pc.token; diff --git a/apps/interpreters/bas/str.c b/apps/interpreters/bas/str.c index 1491d80d8..0bd07558d 100644 --- a/apps/interpreters/bas/str.c +++ b/apps/interpreters/bas/str.c @@ -1,5 +1,66 @@ -/* Dyanamic strings. */ -/* #includes */ /*{{{C}}}*//*{{{*/ +/**************************************************************************** + * apps/examples/interpreters/bas/value.c + * Dynamic strings. + * + * Copyright (c) 1999-2014 Michael Haardt + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Adapted to NuttX and re-released under a 3-clause BSD license: + * + * Copyright (C) 2014 Gregory Nutt. All rights reserved. + * Authors: Alan Carvalho de Assis <Alan Carvalho de Assis> + * Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + #include "config.h" #include <assert.h> @@ -12,250 +73,384 @@ #include "str.h" -#ifdef USE_DMALLOC -#include "dmalloc.h" -#endif -/*}}}*/ +/**************************************************************************** + * Public Functions + ****************************************************************************/ -int cistrcmp(const char *s, const char *r) /*{{{*/ +int cistrcmp(const char *s, const char *r) { - assert(s!=(char*)0); - assert(r!=(char*)0); - while (*s && tolower(*s)==tolower(*r)) { ++s; ++r; }; - return ((tolower(*s)-tolower(*r))); + assert(s != (char *)0); + assert(r != (char *)0); + while (*s && tolower(*s) == tolower(*r)) + { + ++s; + ++r; + } + + return ((tolower(*s) - tolower(*r))); } -/*}}}*/ -struct String *String_new(struct String *this) /*{{{*/ +struct String *String_new(struct String *this) { - assert(this!=(struct String*)0); - this->length=0; - this->character=(char*)0; - this->field=(struct StringField*)0; + assert(this != (struct String *)0); + this->length = 0; + this->character = (char *)0; + this->field = (struct StringField *)0; return this; } -/*}}}*/ -void String_destroy(struct String *this) /*{{{*/ + +void String_destroy(struct String *this) { - assert(this!=(struct String*)0); - if (this->field) String_leaveField(this); - if (this->length) free(this->character); + assert(this != (struct String *)0); + if (this->field) + { + String_leaveField(this); + } + + if (this->length) + { + free(this->character); + } } -/*}}}*/ -int String_joinField(struct String *this, struct StringField *field, char *character, size_t length) /*{{{*/ + +int String_joinField(struct String *this, struct StringField *field, + char *character, size_t length) { struct String **n; - assert(this!=(struct String*)0); - if (this->field) String_leaveField(this); - this->field=field; - if ((n=(struct String**)realloc(field->refStrings,sizeof(struct String*)*(field->refCount+1)))==(struct String**)0) return -1; - field->refStrings=n; - field->refStrings[field->refCount]=this; + assert(this != (struct String *)0); + if (this->field) + { + String_leaveField(this); + } + + this->field = field; + if ((n = + (struct String **)realloc(field->refStrings, + sizeof(struct String *) * (field->refCount + + 1))) == + (struct String **)0) + { + return -1; + } + + field->refStrings = n; + field->refStrings[field->refCount] = this; ++field->refCount; - if (this->length) free(this->character); - this->character=character; - this->length=length; + if (this->length) + { + free(this->character); + } + + this->character = character; + this->length = length; return 0; } -/*}}}*/ -void String_leaveField(struct String *this) /*{{{*/ + +void String_leaveField(struct String *this) { struct StringField *field; int i; struct String **ref; - assert(this!=(struct String*)0); - field=this->field; - assert(field!=(struct StringField*)0); - for (i=0,ref=field->refStrings; i<field->refCount; ++i,++ref) - { - if (*ref==this) + assert(this != (struct String *)0); + field = this->field; + assert(field != (struct StringField *)0); + for (i = 0, ref = field->refStrings; i < field->refCount; ++i, ++ref) { - int further=--field->refCount-i; + if (*ref == this) + { + int further = --field->refCount - i; + + if (further) + { + memmove(ref, ref + 1, further * sizeof(struct String **)); + } - if (further) memmove(ref,ref+1,further*sizeof(struct String**)); - this->character=(char*)0; - this->length=0; - this->field=(struct StringField*)0; - return; + this->character = (char *)0; + this->length = 0; + this->field = (struct StringField *)0; + return; + } } - } + assert(0); } -/*}}}*/ -struct String *String_clone(struct String *this, const struct String *original) /*{{{*/ + +struct String *String_clone(struct String *this, const struct String *original) { - assert(this!=(struct String*)0); + assert(this != (struct String *)0); String_new(this); - String_appendString(this,original); + String_appendString(this, original); return this; } -/*}}}*/ -int String_size(struct String *this, size_t length) /*{{{*/ + +int String_size(struct String *this, size_t length) { char *n; - assert(this!=(struct String*)0); - if (this->field) String_leaveField(this); + assert(this != (struct String *)0); + if (this->field) + { + String_leaveField(this); + } + if (length) - { - if (length>this->length) { - if ((n=realloc(this->character,length+1))==(char*)0) return -1; - this->character=n; + if (length > this->length) + { + if ((n = realloc(this->character, length + 1)) == (char *)0) + { + return -1; + } + + this->character = n; + } + + this->character[length] = '\0'; } - this->character[length]='\0'; - } else - { - if (this->length) free(this->character); - this->character=(char*)0; - } - this->length=length; + { + if (this->length) + { + free(this->character); + } + + this->character = (char *)0; + } + + this->length = length; return 0; } -/*}}}*/ -int String_appendString(struct String *this, const struct String *app) /*{{{*/ + +int String_appendString(struct String *this, const struct String *app) { - size_t oldlength=this->length; + size_t oldlength = this->length; + + if (this->field) + { + String_leaveField(this); + } + + if (app->length == 0) + { + return 0; + } - if (this->field) String_leaveField(this); - if (app->length==0) return 0; - if (String_size(this,this->length+app->length)==-1) return -1; - memcpy(this->character+oldlength,app->character,app->length); + if (String_size(this, this->length + app->length) == -1) + { + return -1; + } + + memcpy(this->character + oldlength, app->character, app->length); return 0; } -/*}}}*/ -int String_appendChar(struct String *this, char ch) /*{{{*/ + +int String_appendChar(struct String *this, char ch) { - size_t oldlength=this->length; + size_t oldlength = this->length; - if (this->field) String_leaveField(this); - if (String_size(this,this->length+1)==-1) return -1; - this->character[oldlength]=ch; + if (this->field) + { + String_leaveField(this); + } + if (String_size(this, this->length + 1) == -1) + { + return -1; + } + + this->character[oldlength] = ch; return 0; } -/*}}}*/ -int String_appendChars(struct String *this, const char *ch) /*{{{*/ + +int String_appendChars(struct String *this, const char *ch) { - size_t oldlength=this->length; - size_t chlen=strlen(ch); + size_t oldlength = this->length; + size_t chlen = strlen(ch); + + if (this->field) + { + String_leaveField(this); + } - if (this->field) String_leaveField(this); - if (String_size(this,this->length+chlen)==-1) return -1; - memcpy(this->character+oldlength,ch,chlen); + if (String_size(this, this->length + chlen) == -1) + { + return -1; + } + + memcpy(this->character + oldlength, ch, chlen); return 0; } -/*}}}*/ -int String_appendPrintf(struct String *this, const char *fmt, ...) /*{{{*/ + +int String_appendPrintf(struct String *this, const char *fmt, ...) { char buf[1024]; - size_t l,j; + size_t l, j; va_list ap; - if (this->field) String_leaveField(this); + if (this->field) + { + String_leaveField(this); + } + va_start(ap, fmt); - l=vsprintf(buf,fmt,ap); + l = vsprintf(buf, fmt, ap); va_end(ap); - j=this->length; - if (String_size(this,j+l)==-1) return -1; - memcpy(this->character+j,buf,l); + j = this->length; + if (String_size(this, j + l) == -1) + { + return -1; + } + + memcpy(this->character + j, buf, l); return 0; } -/*}}}*/ -int String_insertChar(struct String *this, size_t where, char ch) /*{{{*/ + +int String_insertChar(struct String *this, size_t where, char ch) { - size_t oldlength=this->length; + size_t oldlength = this->length; + + if (this->field) + { + String_leaveField(this); + } - if (this->field) String_leaveField(this); - assert(where<oldlength); - if (String_size(this,this->length+1)==-1) return -1; - memmove(this->character+where+1,this->character+where,oldlength-where); - this->character[where]=ch; + assert(where < oldlength); + if (String_size(this, this->length + 1) == -1) + { + return -1; + } + + memmove(this->character + where + 1, this->character + where, + oldlength - where); + this->character[where] = ch; return 0; } -/*}}}*/ -int String_delete(struct String *this, size_t where, size_t len) /*{{{*/ + +int String_delete(struct String *this, size_t where, size_t len) { - size_t oldlength=this->length; + size_t oldlength = this->length; + + if (this->field) + { + String_leaveField(this); + } - if (this->field) String_leaveField(this); - assert(where<oldlength); - assert(len>0); - if ((where+len)<oldlength) memmove(this->character+where,this->character+where+len,oldlength-where-len); - this->character[this->length-=len]='\0'; + assert(where < oldlength); + assert(len > 0); + if ((where + len) < oldlength) + { + memmove(this->character + where, this->character + where + len, + oldlength - where - len); + } + + this->character[this->length -= len] = '\0'; return 0; } -/*}}}*/ -void String_ucase(struct String *this) /*{{{*/ + +void String_ucase(struct String *this) { size_t i; - for (i=0; i<this->length; ++i) this->character[i]=toupper(this->character[i]); + for (i = 0; i < this->length; ++i) + { + this->character[i] = toupper(this->character[i]); + } } -/*}}}*/ -void String_lcase(struct String *this) /*{{{*/ + +void String_lcase(struct String *this) { size_t i; - for (i=0; i<this->length; ++i) this->character[i]=tolower(this->character[i]); + for (i = 0; i < this->length; ++i) + { + this->character[i] = tolower(this->character[i]); + } } -/*}}}*/ -int String_cmp(const struct String *this, const struct String *s) /*{{{*/ + +int String_cmp(const struct String *this, const struct String *s) { size_t pos; int res; - const char *thisch,*sch; + const char *thisch, *sch; + + for (pos = 0, thisch = this->character, sch = s->character; + pos < this->length && pos < s->length; ++pos, ++thisch, ++sch) + { + if ((res = (*thisch - *sch))) + { + return res; + } + } - for (pos=0,thisch=this->character,sch=s->character; pos<this->length && pos<s->length; ++pos,++thisch,++sch) - { - if ((res=(*thisch-*sch))) return res; - } - return (this->length-s->length); + return (this->length - s->length); } -/*}}}*/ -void String_lset(struct String *this, const struct String *s) /*{{{*/ + +void String_lset(struct String *this, const struct String *s) { size_t copy; - copy=(this->length<s->length ? this->length : s->length); - if (copy) memcpy(this->character,s->character,copy); - if (copy<this->length) memset(this->character+copy,' ',this->length-copy); + copy = (this->length < s->length ? this->length : s->length); + if (copy) + { + memcpy(this->character, s->character, copy); + } + + if (copy < this->length) + { + memset(this->character + copy, ' ', this->length - copy); + } } -/*}}}*/ -void String_rset(struct String *this, const struct String *s) /*{{{*/ + +void String_rset(struct String *this, const struct String *s) { size_t copy; - copy=(this->length<s->length ? this->length : s->length); - if (copy) memcpy(this->character+this->length-copy,s->character,copy); - if (copy<this->length) memset(this->character,' ',this->length-copy); + copy = (this->length < s->length ? this->length : s->length); + if (copy) + { + memcpy(this->character + this->length - copy, s->character, copy); + } + + if (copy < this->length) + { + memset(this->character, ' ', this->length - copy); + } } -/*}}}*/ -void String_set(struct String *this, size_t pos, const struct String *s, size_t length) /*{{{*/ + +void String_set(struct String *this, size_t pos, const struct String *s, + size_t length) { - if (this->length>=pos) - { - if (this->length<(pos+length)) length=this->length-pos; - if (length) memcpy(this->character+pos,s->character,length); - } + if (this->length >= pos) + { + if (this->length < (pos + length)) + { + length = this->length - pos; + } + + if (length) + { + memcpy(this->character + pos, s->character, length); + } + } } -/*}}}*/ -struct StringField *StringField_new(struct StringField *this) /*{{{*/ +struct StringField *StringField_new(struct StringField *this) { - this->refStrings=(struct String**)0; - this->refCount=0; + this->refStrings = (struct String **)0; + this->refCount = 0; return this; } -/*}}}*/ -void StringField_destroy(struct StringField *this) /*{{{*/ + +void StringField_destroy(struct StringField *this) { int i; - for (i=this->refCount; i>0; ) String_leaveField(this->refStrings[--i]); - this->refCount=-1; + for (i = this->refCount; i > 0;) + { + String_leaveField(this->refStrings[--i]); + } + + this->refCount = -1; free(this->refStrings); } -/*}}}*/ diff --git a/apps/interpreters/bas/token.c b/apps/interpreters/bas/token.c index 4ccdb7084..881c60ed3 100644 --- a/apps/interpreters/bas/token.c +++ b/apps/interpreters/bas/token.c @@ -1402,11 +1402,6 @@ char *yytext; #include "token.h" #include "statement.h" -#ifdef DMALLOC -#include "dmalloc.h" -#endif -/*}}}*/ - static int matchdata; static int backslash_colon; static int uppercase; diff --git a/apps/interpreters/bas/value.c b/apps/interpreters/bas/value.c index 2198d2fa5..a1d9c05fa 100644 --- a/apps/interpreters/bas/value.c +++ b/apps/interpreters/bas/value.c @@ -100,10 +100,6 @@ extern long int lrint(double x); #include "error.h" #include "value.h" -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - /**************************************************************************** * Private Data ****************************************************************************/ diff --git a/apps/interpreters/bas/var.c b/apps/interpreters/bas/var.c index cfb1680f6..3b9c49df9 100644 --- a/apps/interpreters/bas/var.c +++ b/apps/interpreters/bas/var.c @@ -22,10 +22,6 @@ #include "error.h" #include "var.h" -#ifdef USE_DMALLOC -# include "dmalloc.h" -#endif - /**************************************************************************** * Public Functions ****************************************************************************/ |