diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-11-09 22:38:47 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-11-09 22:38:47 +0000 |
commit | 2ab64959d83ed2793d71ab3fa03b8ebdd4925902 (patch) | |
tree | 5417aeff1cadeb36793cfee3bc0733b2b6c77f44 /src/tafreader.cpp | |
parent | bb9c0dc8dd2c852d9b6e89b9fd883232019cea93 (diff) | |
download | libbu++-2ab64959d83ed2793d71ab3fa03b8ebdd4925902.tar.gz libbu++-2ab64959d83ed2793d71ab3fa03b8ebdd4925902.tar.bz2 libbu++-2ab64959d83ed2793d71ab3fa03b8ebdd4925902.tar.xz libbu++-2ab64959d83ed2793d71ab3fa03b8ebdd4925902.zip |
Figured I might as well add single-line comments to taf, it now supports //
style comments.
Diffstat (limited to 'src/tafreader.cpp')
-rw-r--r-- | src/tafreader.cpp | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/src/tafreader.cpp b/src/tafreader.cpp index 5609f7c..efcb3d9 100644 --- a/src/tafreader.cpp +++ b/src/tafreader.cpp | |||
@@ -49,6 +49,8 @@ void Bu::TafReader::groupContent( Bu::TafGroup *pGroup ) | |||
49 | return; | 49 | return; |
50 | else if( c == '/' && la == '*' ) | 50 | else if( c == '/' && la == '*' ) |
51 | pGroup->addChild( readComment() ); | 51 | pGroup->addChild( readComment() ); |
52 | else if( c == '/' && la == '/' ) | ||
53 | pGroup->addChild( readComment( true ) ); | ||
52 | else if( c == ':' ) | 54 | else if( c == ':' ) |
53 | throw TafException("Encountered stray ':' in taf stream."); | 55 | throw TafException("Encountered stray ':' in taf stream."); |
54 | else | 56 | else |
@@ -71,22 +73,43 @@ Bu::TafProperty *Bu::TafReader::readProperty() | |||
71 | //printf(" %s = %s\n", sName.getStr(), sValue.getStr() ); | 73 | //printf(" %s = %s\n", sName.getStr(), sValue.getStr() ); |
72 | } | 74 | } |
73 | 75 | ||
74 | Bu::TafComment *Bu::TafReader::readComment() | 76 | Bu::TafComment *Bu::TafReader::readComment( bool bEOL ) |
75 | { | 77 | { |
76 | next(); | ||
77 | FString sCmnt; | 78 | FString sCmnt; |
78 | for(;;) | 79 | next(); |
80 | if( bEOL ) | ||
79 | { | 81 | { |
80 | next(); | 82 | for(;;) |
81 | if( c == '*' && la == '/' ) | ||
82 | { | 83 | { |
83 | next(); next(); | 84 | next(); |
84 | break; | 85 | if( c == '\n' && la == '\r' ) |
86 | { | ||
87 | next(); next(); | ||
88 | break; | ||
89 | } | ||
90 | else if( c == '\n' || c == '\r' ) | ||
91 | { | ||
92 | next(); | ||
93 | break; | ||
94 | } | ||
95 | sCmnt += c; | ||
96 | } | ||
97 | } | ||
98 | else | ||
99 | { | ||
100 | for(;;) | ||
101 | { | ||
102 | next(); | ||
103 | if( c == '*' && la == '/' ) | ||
104 | { | ||
105 | next(); next(); | ||
106 | break; | ||
107 | } | ||
108 | sCmnt += c; | ||
85 | } | 109 | } |
86 | sCmnt += c; | ||
87 | } | 110 | } |
88 | 111 | ||
89 | return new TafComment( sCmnt ); | 112 | return new TafComment( sCmnt, bEOL ); |
90 | } | 113 | } |
91 | 114 | ||
92 | Bu::FString Bu::TafReader::readStr() | 115 | Bu::FString Bu::TafReader::readStr() |