Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# ACE_ARGV Class Reference

Transforms a string <buf> into an <argv> style vector of strings or an <argv> style vector of string <buf>, performing environment variable substitutions if necessary. More...

`#include <ARGV.h>`

Collaboration diagram for ACE_ARGV:

[legend]
List of all members.

## Public Types
enum | States { TO_STRING = 1, TO_PTR_ARRAY = 2, ITERATIVE = 3 }
## Public Methods
| ACE_ARGV (const ACE_TCHAR buf[], int substitute_env_args=1)
| ACE_ARGV (ACE_TCHAR *argv[], int substitute_env_args=1)
| ACE_ARGV (ACE_TCHAR *first_argv[], ACE_TCHAR *second_argv[], int substitute_env_args=1)
| ACE_ARGV (int substitute_env_args=1)
| ~ACE_ARGV (void)
| Destructor. More...
const ACE_TCHAR * | operator[] (size_t index)
| Returns the <index>th string in the ARGV array. More...
ACE_TCHAR ** | argv (void)
size_t | argc (void) const
| Returns <argc>. More...
const ACE_TCHAR * | buf (void)
| Returns the <buf>. Caller should not delete this memory since the <ARGV> destructor will delete it. More...
void | dump (void) const
| Dump the state of an object. More...
int | add (const ACE_TCHAR *next_arg)
| Add another argument. This only works in the <ITERATIVE> state. Note that this method does not copy <next_arg>, but instead assumes ownership of it. Returns -1 on failure and 0 on success. More...
int | add (ACE_TCHAR *argv[])
int | state (void) const
| What state is this ACE_ARGV in? More...
## Public Attributes
| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks. More...
## Private Methods
int | create_buf_from_queue (void)
| Creates buf_ from the queue, deletes previous buf_. More...
int | string_to_argv (void)
| Converts buf_ into the ACE_TCHAR *argv[] format. More...
int | argv_to_string (ACE_TCHAR **argv, ACE_TCHAR *&buf)
| Returns the string created from argv in buf and returns the number of arguments. More...
## Private Attributes
int | substitute_env_args_
| Replace args with environment variable values? More...
int | state_
| Current state marker. More...
size_t | argc_
| Number of arguments in the ARGV array. More...
ACE_TCHAR ** | argv_
| The array of string arguments. More...
ACE_TCHAR * | buf_
| Buffer containing the <argv> contents. More...
size_t | length_
| Total length of the arguments in the queue, not counting separating spaces. More...
ACE_Unbounded_Queue< ACE_TCHAR *> | queue_
| Queue which keeps user supplied arguments. This is only active in the "iterative" mode. More...

## Detailed Description

Transforms a string <buf> into an <argv> style vector of strings or an <argv> style vector of string <buf>, performing environment variable substitutions if necessary.

## Member Enumeration Documentation

enum ACE_ARGV::States

  | Enumeration values:
  TO_STRING | ACE_ARGV converts buf[] to ACE_TCHAR *argv[].
  TO_PTR_ARRAY | ACE_ARGV converts ACE_TCHAR *argv[] to buf[].
  ITERATIVE | Builds buf[] or ACE_TCHAR *argv[] iteratively with <add>.

## Constructor & Destructor Documentation

ACE_ARGV::ACE_ARGV | ( | const ACE_TCHAR | buf[],
|  | int | substitute_env_args = 1
| ) |

| Converts <buf> into an <argv>-style vector of strings. If <substitute_env_args> is enabled then we'll substitute the environment variables for each $ENV encountered in the string. The subscript and <argv> operations are not allowed on an ACE_ARGV created this way.

ACE_ARGV::ACE_ARGV | ( | ACE_TCHAR * | argv[],
|  | int | substitute_env_args = 1
| ) |

| Converts <argv> into a linear string. If <substitute_env_args> is enabled then we'll substitute the environment variables for each $ENV encountered in the string. The <buf> operation is not allowed on an ACE_ARGV created this way.

ACE_ARGV::ACE_ARGV | ( | ACE_TCHAR * | first_argv[],
|  | ACE_TCHAR * | second_argv[],
|  | int | substitute_env_args = 1
| ) |

| Creates an ACE_ARGV which is the concatenation of the first_argv and the second argv. The argv arguments should be null pointer terminated.

ACE_ARGV::ACE_ARGV | ( | int | substitute_env_args = 1 | ) |

| Entry point for creating an ACE_TCHAR *[] command line iteratively via the <add> method. When this constructor is used, the <ITERATIVE> state is enabled. The <argv> and <buf> methods are allowed, and the result is recreated when called multiple times. The subscript operator is not allowed.

ACE_ARGV::~ACE_ARGV | ( | void |  | ) |

| Destructor.

## Member Function Documentation

int ACE_ARGV::add | ( | ACE_TCHAR * | argv[] | ) |

| Add another <argv> array. The <argv> parameter must be NULL terminated. This only works in the <ITERATIVE> state. Returns -1 on failure and 0 on success.

int ACE_ARGV::add | ( | const ACE_TCHAR * | next_arg | ) |

| Add another argument. This only works in the <ITERATIVE> state. Note that this method does not copy <next_arg>, but instead assumes ownership of it. Returns -1 on failure and 0 on success.

ACE_INLINE size_t ACE_ARGV::argc | ( | void |  | ) | const

| Returns <argc>.

ACE_INLINE ACE_TCHAR ** ACE_ARGV::argv | ( | void |  | ) |

| Returns the <argv> array. Caller should not delete this memory since the <ARGV> destructor will delete it. If the caller modifies the array in the iterative mode, the changes are not saved to the queue.

int ACE_ARGV::argv_to_string | ( | ACE_TCHAR ** | argv,
|  | ACE_TCHAR *& | buf
| ) | `[private]`

| Returns the string created from argv in buf and returns the number of arguments.

ACE_INLINE const ACE_TCHAR * ACE_ARGV::buf | ( | void |  | ) |

| Returns the <buf>. Caller should not delete this memory since the <ARGV> destructor will delete it.

int ACE_ARGV::create_buf_from_queue | ( | void |  | ) | `[private]`

| Creates buf_ from the queue, deletes previous buf_.

void ACE_ARGV::dump | ( | void |  | ) | const

| Dump the state of an object.

ACE_INLINE const ACE_TCHAR * ACE_ARGV::operator[] | ( | size_t | i | ) |

| Returns the <index>th string in the ARGV array.

ACE_INLINE int ACE_ARGV::state | ( | void |  | ) | const

| What state is this ACE_ARGV in?

int ACE_ARGV::string_to_argv | ( | void |  | ) | `[private]`

| Converts buf_ into the ACE_TCHAR *argv[] format.

## Member Data Documentation

ACE_ARGV::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks.

size_t ACE_ARGV::argc_`[private]`

| Number of arguments in the ARGV array.

ACE_TCHAR** ACE_ARGV::argv_`[private]`

| The array of string arguments.

ACE_TCHAR* ACE_ARGV::buf_`[private]`

| Buffer containing the <argv> contents.

size_t ACE_ARGV::length_`[private]`

| Total length of the arguments in the queue, not counting separating spaces.

ACE_Unbounded_Queue<ACE_TCHAR *> ACE_ARGV::queue_`[private]`

| Queue which keeps user supplied arguments. This is only active in the "iterative" mode.

int ACE_ARGV::state_`[private]`

| Current state marker.

int ACE_ARGV::substitute_env_args_`[private]`

| Replace args with environment variable values?

The documentation for this class was generated from the following files:

- ARGV.h
- ARGV.cpp
- ARGV.i