#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "APRImplement.h"
#include<iostream>
#include <apr_general.h>
#include <stdio.h>
#include <stdlib.h>
#include <apr_general.h>
#include <apr_tables.h>
#include <apr_strings.h>
/* apr_array's initial size.
* because apr_array is a dynamic array, the initial size is not a max size of the array. */
#define ARRAY_INIT_SZ 32
APRImplement::APRImplement( )
{
/* initail apr */
apr_initialize();
apr_pool_create( &mp, NULL );
}
/* get pool data */
apr_pool_t* APRImplement::getMp(){
return mp;
}
/* insert data in stack */
void APRImplement::setApr( APRImplement aprGetMp, std::size_t sizeValue ){
arr = apr_array_make( aprGetMp.getMp(), ARRAY_INIT_SZ, sizeValue );
}
/* read data in stack by constant object*/
void APRImplement::iterate_array( const apr_array_header_t *arr ){
for( int i = 0; i < arr->nelts; i++ ){
const char *s = ( ( const char ** )arr->elts)[ i ];
std::cout<< " i data : "<< i << " ,s data : "<<s<<std::endl;
}
}
/* for pop data */
void APRImplement::iterate_stack_array( apr_array_header_t *arr_ ){
const char **ppt;
/* casting type to ppt : ( const char ** ) */
while( ppt = ( const char** ) apr_array_pop( arr_ ) ){
std::cout<<"pop string : "<<*ppt<<std::endl;
}
}
/* deconstructor */
APRImplement::~APRImplement()
{
apr_pool_destroy( mp );
apr_terminate();
std::cout<<" Clear APR "<<std::endl;
}
/*get array header */
apr_array_header_t* APRImplement::getARR(){
return arr;
}
void APRImplement::append_items_to_array( apr_array_header_t *arr_, apr_pool_t * mp ,char *dataInsert ){
std::cout<<" Char insert : "<<dataInsert<<std::endl;
*( const char** )apr_array_push( arr_ ) = apr_pstrdup( mp, dataInsert );
std::cout<<" Push complete "<<std::endl;
}
int main(){
/* initial apr_pool_t */
APRImplement apr_init;
char * insertValue = "testValue";
/* initi value */
apr_init.setApr( apr_init, sizeof( const char* ) );
/* push data into stack */
apr_init.append_items_to_array( apr_init.getARR(), apr_init.getMp(), insertValue );
/* list data in stack */
apr_init.iterate_stack_array( apr_init.getARR() );
}