You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2011/10/19 03:17:18 UTC

[lucy-commits] svn commit: r1185940 - in /incubator/lucy/branches/clownfish_lemon/clownfish/src: CFCLexHeader.l CFCParseHeader.y CFCParser.c CFCParser.h

Author: marvin
Date: Wed Oct 19 01:17:17 2011
New Revision: 1185940

URL: http://svn.apache.org/viewvc?rev=1185940&view=rev
Log:
Use accessors rather than direct access for the parser's current text.

Modified:
    incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l
    incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y
    incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c
    incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h

Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l Wed Oct 19 01:17:17 2011
@@ -31,13 +31,7 @@
         S_save_and_parse(token_type)
     static void
     S_save_and_parse(int token_type) {
-        if (yyleng >= CFCParser_current_state->cap) {
-            CFCParser_current_state->text
-                = REALLOCATE(CFCParser_current_state->text, yyleng + 1);
-            CFCParser_current_state->cap = yyleng + 1;
-        }
-        strncpy(CFCParser_current_state->text, yytext, yyleng);
-        CFCParser_current_state->text[yyleng] = '\0';
+        CFCParser_set_text(CFCParser_current_state, yytext, yyleng);
         PARSE(token_type);
     }
 %}

Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y Wed Oct 19 01:17:17 2011
@@ -53,15 +53,11 @@ static const char KW_DOUBLE[]   = "doubl
 
 %syntax_error {
     state->errors = true;
-    FREEMEM(state->text);
-    state->text = NULL;
-    state->cap = 0;
+    CFCParser_set_text(state, NULL, 0);
 }
 
 %parse_accept {
-    FREEMEM(state->text);
-    state->text = NULL;
-    state->cap = 0;
+    CFCParser_set_text(state, NULL, 0);
 }
 
 /* Temporary. */
@@ -248,7 +244,7 @@ va_list_type(A) ::= va_list_specifier.
 arbitrary_type(A) ::= ARBITRARY.
 {
     A = (CFCBase*)CFCType_new_arbitrary(CFCParser_get_parcel(),
-                                        CFCParser_current_state->text);
+                                        CFCParser_get_text(state));
 }
 
 object_type(A) ::= object_type_specifier(B) ASTERISK.
@@ -263,12 +259,12 @@ object_type(A) ::= type_qualifier_list(B
 
 object_type_specifier(A) ::= CLASS_NAME_COMPONENT.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 object_type_specifier(A) ::= PREFIXED_OBJECT_TYPE_SPECIFIER.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 type_qualifier(A) ::= CONST.       { A = CFCTYPE_CONST; }
@@ -319,24 +315,24 @@ scalar_constant(A) ::= NULL.     { A = C
 
 integer_literal(A) ::= INTEGER_LITERAL.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 float_literal(A) ::= FLOAT_LITERAL.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 hex_literal(A) ::= HEX_LITERAL.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 string_literal(A) ::= STRING_LITERAL.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 declarator(A) ::= IDENTIFIER.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 param_variable(A) ::= type(B) declarator(C).
@@ -381,22 +377,22 @@ param_list_elems(A) ::= param_variable(B
 
 docucomment(A) ::= DOCUCOMMENT.
 {
-    A = (CFCBase*)CFCDocuComment_parse(CFCParser_current_state->text);
+    A = (CFCBase*)CFCDocuComment_parse(CFCParser_get_text(state));
 }
 
 class_name(A) ::= CLASS_NAME_MULTI.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 class_name(A) ::= CLASS_NAME_COMPONENT.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 cnick(A) ::= CNICK CLASS_NAME_COMPONENT.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }
 
 cblock(A) ::= CBLOCK_START blob(B) CBLOCK_CLOSE.
@@ -406,5 +402,5 @@ cblock(A) ::= CBLOCK_START blob(B) CBLOC
 
 blob(A) ::= BLOB.
 {
-    A = CFCUtil_strdup(CFCParser_current_state->text);
+    A = CFCUtil_strdup(CFCParser_get_text(state));
 }

Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c Wed Oct 19 01:17:17 2011
@@ -94,6 +94,28 @@ CFCParser_parse(CFCParser *self, const c
 }
 
 void
+CFCParser_set_text(CFCParserState *self, const char *text, size_t len) {
+    if (text) {
+        if (len >= self->cap) {
+            self->cap = len + 1;
+            self->text = REALLOCATE(self->text, self->cap);
+        }
+        memcpy(self->text, text, len);
+        self->text[len] = '\0';
+    }
+    else {
+        FREEMEM(self->text);
+        self->cap = 0;
+        self->text = NULL;
+    }
+}
+
+const char*
+CFCParser_get_text(CFCParserState *self) {
+    return self->text;
+}
+
+void
 CFCParser_set_parcel(CFCParcel *parcel) {
     CFCBase_incref((CFCBase*)parcel);
     CFCBase_decref((CFCBase*)CFCParser_current_parcel);

Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h Wed Oct 19 01:17:17 2011
@@ -51,6 +51,11 @@ CFCParser_destroy(CFCParser *self);
 struct CFCBase*
 CFCParser_parse(CFCParser *self, const char *string);
 
+void
+CFCParser_set_text(CFCParserState *self, const char *text, size_t len);
+
+const char*
+CFCParser_get_text(CFCParserState *self);
 
 void
 CFCParser_set_parcel(struct CFCParcel *parcel);