diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1998-10-31 20:59:44 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1998-10-31 20:59:44 +0000 |
commit | dd8750b3fcaa164a72b3da8ffacdc52e80be5746 (patch) | |
tree | 6ca35beb60f9b7c8f0fdb80a8629189d6773f454 /TAO | |
parent | 3f813bbdaae50baa076fdfa3e59ea6c414c03b28 (diff) | |
download | ATCD-dd8750b3fcaa164a72b3da8ffacdc52e80be5746.tar.gz |
.
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/performance-tests/Demux/CodeGen/gen_names.cpp | 233 |
1 files changed, 115 insertions, 118 deletions
diff --git a/TAO/performance-tests/Demux/CodeGen/gen_names.cpp b/TAO/performance-tests/Demux/CodeGen/gen_names.cpp index 77e7cdc8f54..79d452627b0 100644 --- a/TAO/performance-tests/Demux/CodeGen/gen_names.cpp +++ b/TAO/performance-tests/Demux/CodeGen/gen_names.cpp @@ -26,42 +26,40 @@ int Demux_Test_CodeGenerator::gen_poa_names (void) { this->state_ = Demux_Test_CodeGenerator::CG_POA; + if (this->gen_names (this->poa_array_, this->num_POAs_) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - " - "Failed to generate poa names\n"), - -1); - } + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - " + "Failed to generate poa names\n"), + -1); // We store the generated names in a file - FILE *fp; char poa_file [128]; - ACE_OS::sprintf (poa_file, "poa_names_%d.dat", this->num_POAs_); - if ((fp = ACE_OS::fopen (poa_file, "w")) == 0) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - " - "Failed to open file %s\n", poa_file), - -1); - } + FILE *fp = ACE_OS::fopen (poa_file, "w"); + + if (fp == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - " + "Failed to open file %s\n", poa_file), + -1); - // now output the names + // Now output the names ACE_CString *str; ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->poa_array_); - // start with the first element - (void)iter.first (); - while (!iter.done ()) + // Start with the first element. + for (iter.first (); + !iter.done (); + (void) iter.advance ()) { - // grab the next element waiting to be grabbed + // grab the next element waiting to be grabbed. (void) iter.next (str); - ACE_OS::fprintf (fp, "%s\n", str->c_str ()); - - (void) iter.advance (); + ACE_OS::fprintf (fp, + "%s\n", + str->c_str ()); } ACE_OS::fclose (fp); @@ -69,48 +67,47 @@ Demux_Test_CodeGenerator::gen_poa_names (void) return 0; } -// object table generator +// Object table generator. + int Demux_Test_CodeGenerator::gen_object_names (void) { this->state_ = Demux_Test_CodeGenerator::CG_OBJ; - if (this->gen_names (this->obj_array_, this->num_objs_) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - " - "Failed to generate object names\n"), - -1); - } + + if (this->gen_names (this->obj_array_, + this->num_objs_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - " + "Failed to generate object names\n"), + -1); return 0; } -// method table generator +// Method table generator. + int Demux_Test_CodeGenerator::gen_operation_names (void) { this->state_ = Demux_Test_CodeGenerator::CG_OP; - if (this->gen_names (this->op_array_, this->num_ops_) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - " - "Failed to generate object names\n"), - -1); - } - - // save it at this location + if (this->gen_names (this->op_array_, + this->num_ops_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - " + "Failed to generate object names\n"), + -1); + + // Save it at this location. if (this->op_array_.enqueue_tail (ACE_CString ("shutdown")) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_operation_names - " - "Failed to enqueue the shutdown operation\n"), - -1); - } - + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_operation_names - " + "Failed to enqueue the shutdown operation\n"), + -1); return 0; } -// generic unique name generator +// Generic unique name generator. + int Demux_Test_CodeGenerator::gen_names (ACE_Unbounded_Queue<ACE_CString> &arr, int limit) @@ -118,22 +115,19 @@ Demux_Test_CodeGenerator::gen_names (ACE_Unbounded_Queue<ACE_CString> &arr, int i; // loop index // Generate "limit" number of distinct strings + for (i = 0; i < limit; i++) - { - // inserts a new string at the tail in array "arr" - if (this->insert_unique_string (arr) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::gen_names - " - "Failed to insert unique name\n"), - -1); - } - } - + // inserts a new string at the tail in array "arr" + if (this->insert_unique_string (arr) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::gen_names - " + "Failed to insert unique name\n"), + -1); return 0; } -// generate a distinct string and insert it at the tail +// Generate a distinct string and insert it at the tail. + int Demux_Test_CodeGenerator::insert_unique_string (ACE_Unbounded_Queue<ACE_CString> &arr) { @@ -141,64 +135,62 @@ Demux_Test_CodeGenerator::insert_unique_string (ACE_Unbounded_Queue<ACE_CString> ACE_CString str; int exists = 1; - // get a random number between 3 and 32 - rnd = this->gen_rand (3,32); + // Get a random number between 3 and 32. + rnd = this->gen_rand (3, 32); - // This random number is used as a string length of the distinct string to be - // generated. + // This random number is used as a string length of the distinct + // string to be generated. do { if (this->create_string (rnd, str) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " - "Failed to create string\n"), - -1); - } + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " + "Failed to create string\n"), + -1); - // if we are generating operations, we do not want to generate the - // operation "shutdown" that has special semantics - if ((this->state_ == Demux_Test_CodeGenerator::CG_OP) && - (!ACE_OS::strcmp (str.c_str (), "shutdown"))) - { - // repeat the loop since we cannot accept this string - continue; - } + // If we are generating operations, we do not want to generate + // the operation "shutdown" that has special semantics + + if (this->state_ == Demux_Test_CodeGenerator::CG_OP + && ACE_OS::strcmp (str.c_str (), "shutdown") == 0) + // repeat the loop since we cannot accept this string + continue; exists = this->is_present (arr, str); + if (exists == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " - "is_present check failed\n"), - -1); - } + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " + "is_present check failed\n"), + -1); } while (exists > 0); - // we are here implies that the generated string did not exist in the queue - // that has been created so far + // We are here implies that the generated string did not exist in + // the queue that has been created so far. - // save it at this location + // Save it at this location. if (arr.enqueue_tail (str) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " - "Failed to enqueue\n"), - -1); - } + ACE_ERROR_RETURN ((LM_ERROR, + "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - " + "Failed to enqueue\n"), + -1); return 0; } -// generate a random number in the given limits +// Generate a random number in the given limits. + long Demux_Test_CodeGenerator::gen_rand (int low, int up) { + // @@ Vishal, this call to lrand48 isn't portable. Can you please + // try to replace it with a call from ACE_OS, e.g., ACE_OS::rand()? return (lrand48 () % (up - low + 1)) + low; } -// check if the given string is present in the array +// Check if the given string is present in the array + int Demux_Test_CodeGenerator:: is_present (ACE_Unbounded_Queue<ACE_CString> &arr, ACE_CString &s) @@ -208,56 +200,61 @@ Demux_Test_CodeGenerator:: is_present (ACE_Unbounded_Queue<ACE_CString> &arr, // start with the first element if (!iter.first ()) + // queue is empty + return 0; + + for (; + !iter.done (); + iter.advance (); { - // queue is empty - return 0; - } - while (!iter.done ()) - { - // grab the next element waiting to be grabbed + // Grab the next element waiting to be grabbed. (void) iter.next (str); // check if they match if (!str->compare (s)) return 1; // they match - - (void) iter.advance (); } + return 0; // not present } -// create a string of length = len +// Create a string of length = len. + int -Demux_Test_CodeGenerator::create_string (int len, ACE_CString &s) +Demux_Test_CodeGenerator::create_string (int len, + ACE_CString &s) { - int i; - char ch; - - for (i = 0; i < len; i++) + for (int i = 0; i < len; i++) { - ch = this->gen_valid_char (i); - s += ACE_CString (&ch); + char ch = this->gen_valid_char (i); + s += ACE_CString (ch); } + return 0; } -// Generate a valid character for a C++ variable +// Generate a valid character for a C++ variable. + char Demux_Test_CodeGenerator::gen_valid_char (int posn) { - // for posn == 0, we cannot return a digit or an _ as the first character as - // that does not constitute a valid IDL identifier + // For posn == 0, we cannot return a digit or an _ as the first + // character as that does not constitute a valid IDL identifier + char ch; - while (1) + + for (;;) { ch = this->gen_rand (48, 122); + if (isdigit (ch) || isupper (ch) || islower (ch) || (ch == '_')) { - if ((posn == 0) && (isdigit (ch) || (ch == '_'))) + if (posn == 0 && (isdigit (ch) || (ch == '_'))) continue; - break; //otherwise + break; // otherwise } } + return ch; } |