Main Page ? Class Hierarchy ? Compound List ? File List ? Compound Members ? File Members ?

PAwk Class Reference

#include <cmt_awk.h>

Inheritance diagram for PAwk:

[legend]
Collaboration diagram for PAwk:

[legend]
List of all members.

Public Methods

condition? run (const cmt_string &command, const cmt_string &pattern="")
condition? run (const cmt_string &text, const cmt_regexp &expression)

Member Function Documentation

Awk::condition PAwk::run (? const cmt_string &? ? text,
const cmt_regexp &? ? expression
)?
?

Reimplemented from Awk.

Definition at line 540 of file cmt_awk.cxx.

References Awk::begin(), cmt_string::c_str(), Awk::condition, Awk::end(), Awk::filter(), Awk::m_condition, Awk::m_line_number, cmt_regexp::match(), Awk::ok, and cmt_string::replace().

00542 {
00543   cmt_string line;
00544 
00545   m_line_number = 0;
00546   m_condition = ok;
00547 
00548   begin ();
00549   if (m_condition != ok) return (m_condition);
00550 
00551   FILE* f = popen (command.c_str (), "r"); 
00552   
00553   if (f == 0) return (failed);
00554 
00555   char buffer[256]; 
00556   char* ptr;
00557 
00558   while ((ptr = fgets (buffer, sizeof (buffer), f)) != NULL) 
00559     {
00560       line = ptr;
00561 
00562       line.replace ("\n", "");
00563 
00564       m_line_number++;
00565 
00566       if (line != "")
00567         {
00568           if (expression.match (line))
00569             {
00570               filter (line);
00571               if (m_condition != ok) return (m_condition);
00572             }
00573         }
00574     }
00575 
00576   pclose (f);
00577 
00578   end ();
00579 
00580   return (m_condition);
00581 }

Awk::condition PAwk::run (? const cmt_string &? ? command,
const cmt_string &? ? pattern = ""
)?
?

Reimplemented from Awk.

Definition at line 490 of file cmt_awk.cxx.

References Awk::begin(), cmt_string::c_str(), Awk::condition, Awk::end(), Awk::filter(), cmt_string::find(), Awk::m_condition, Awk::m_line_number, cmt_string::npos, Awk::ok, and cmt_string::replace().

Referenced by Generator::build_windefs().

00492 {
00493   cmt_string line;
00494 
00495   m_line_number = 0;
00496   m_condition = ok;
00497 
00498   begin ();
00499   if (m_condition != ok) return (m_condition);
00500 
00501   FILE* f = popen (command.c_str (), "r"); 
00502   
00503   if (f == 0) return (failed);
00504 
00505   char buffer[8192]; 
00506   char* ptr;
00507 
00508   while ((ptr = fgets (buffer, sizeof (buffer), f)) != NULL) 
00509     {
00510       line = ptr;
00511 
00512       if (line.find ("\n") == cmt_string::npos)
00513         {
00514           cerr << "#CMT> Warning: Line too long and truncated in PAwk::run for command " << command << endl;
00515         }
00516 
00517       line.replace ("\n", "");
00518 
00519       m_line_number++;
00520 
00521       if (line != "")
00522         {
00523           if ((pattern == "") ||
00524               (line.find (pattern) != cmt_string::npos))
00525             {
00526               filter (line);
00527               if (m_condition != ok) return (m_condition);
00528             }
00529         }
00530     }
00531 
00532   pclose (f);
00533 
00534   end ();
00535 
00536   return (m_condition);
00537 }

The documentation for this class was generated from the following files:
Generated on Wed Sep 1 11:00:49 2004 for CMT by 1.2.18