You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/12/14 08:07:11 UTC

cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_map.h

costin      01/12/13 23:07:11

  Modified:    jk/native2/include jk_map.h
  Log:
  That was a bit more difficult, but seems to be fine.
  
  The idea is the same as in pools - use the native mechanism if possible,
  if not use the default impl.
  
  This change will allow the use of apr_table and other map implementations.
  It would also let us plug apr_hash. But more important, in jk_service
  we can avoid copying the headers and use the native representation and
  a wrappers. And the same will work for all servers ( if someone implements
  the wrapper ).
  
  I started to use jk_env as first param, not used for now but it's important
  to get it in the api before it's frozen.
  
  Revision  Changes    Path
  1.4       +96 -70    jakarta-tomcat-connectors/jk/native2/include/jk_map.h
  
  Index: jk_map.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_map.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_map.h	2001/12/06 22:48:49	1.3
  +++ jk_map.h	2001/12/14 07:07:11	1.4
  @@ -58,13 +58,14 @@
   /***************************************************************************
    * Description: Map object header file                                     *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.3 $                                           *
  + * Version:     $Revision: 1.4 $                                           *
    ***************************************************************************/
   
   #ifndef JK_MAP_H
   #define JK_MAP_H
   
   #include "jk_pool.h"
  +#include "jk_env.h"
   #include "jk_logger.h"
   
   #ifdef __cplusplus
  @@ -74,94 +75,119 @@
   struct jk_logger;
   struct jk_pool;
   struct jk_map;
  +struct jk_env;
   typedef struct jk_map jk_map_t;
   
  -int map_alloc(jk_map_t **m, struct jk_pool *pool);
  +/** Map interface. This include only the basic operations, and
  + *   supports both name and index access.
  + */
  +struct jk_map {
  +
  +    void *(*get)(struct jk_env *env, struct jk_map *_this,
  +                 const char *name);
  +    
  +    int (*put)(struct jk_env *env, struct jk_map *_this,
  +               const char *name, void *value,
  +               void **oldValue);
  +
  +    /*  int (*add)(struct jk_env *env, struct jk_map *_this, */
  +    /*           const char *name, void *value ); */
  +
  +    /* Similar with apr_table, elts can be accessed by id
  +     */
  +    
  +    int (*size)(struct jk_env *env, struct jk_map *_this);
  +    
  +    char *(*nameAt)(struct jk_env *env, struct jk_map *m,
  +                    int pos);
  +
  +    void *(*valueAt)(struct jk_env *env, struct jk_map *m,
  +                     int pos);
  +
  +    /* Admin operations */
  +    void (*init)(struct jk_env *env, struct jk_map *m,
  +                 int initialSize, void *wrappedNativeObj);
  +
  +    
  +    /* Empty the map, remove all values ( but it can keep
  +       allocated storage for [] )
  +    */
  +    void (*clear)(struct jk_env *env, struct jk_map *m);
  +
  +    struct jk_pool *pool;
  +    void *_private;
  +};
   
  -int map_free(jk_map_t **m);
  +int jk_map_default_create(struct jk_env *env, jk_map_t **m, 
  +                          struct jk_pool *pool); 
   
  -int map_open(jk_map_t *m);
  +/* int map_open(jk_env *env, jk_map_t *m); */
   
  -int map_close(jk_map_t *m);
   
  -void *map_get(jk_map_t *m,
  -              const char *name,
  -              const void *def);
  +
  +/* Additional functions that operate on maps. They are implemented
  + *  in jk_map.c, togheter with the 'default' jk map, but should operate
  + *  on any map.
  + */
  +
  +char *jk_map_getString(struct jk_env *env, jk_map_t *m,
  +                       const char *name, char *def);
  +
  +/** Get a string property, using the worker's style
  +    for properties.
  +    Example worker.ajp13.host=localhost.
  +*/
  +char *jk_map_getStrProp(struct jk_env *env, jk_map_t *m,
  +                        const char *objType, const char *objName,
  +                        const char *pname, char *def);
  +    
  +int jk_map_getIntProp(struct jk_env *env, jk_map_t *m,
  +                      const char *objType, const char *objName,
  +                      const char *pname,
  +                      int def);
   
  -int map_get_int(jk_map_t *m,
  -                const char *name,
  -                int def);
  +/** Add all the values from src into dst. Use dst's pool
  + */
  +int jk_map_append(struct jk_env *env, jk_map_t * dst,
  +                  jk_map_t * src );
   
  -double map_get_double(jk_map_t *m,
  -                      const char *name,
  -                      double def);
  +/* ========== Manipulating values   ========== */
   
  -char *map_get_string(jk_map_t *m,
  -                     const char *name,
  -                     const char *def);
   
   /** Extract a String[] property. It'll split the value on
    *  ' ', tab, ',', '*'.
  - *  @param pool Pool on which the result will be allocated. Defaults to the map's
  - *              pool
  + * 
  + *  @param pool Pool on which the result will be allocated. Defaults
  + *  to the map's pool XXX Use the env's tmp pool.
    */ 
  -char **map_get_string_list(jk_map_t *m,
  -                           struct jk_pool *pool,
  -                           const char *name,
  -                           unsigned *list_len,
  -                           const char *def);
  -
  -int map_put(jk_map_t *m,
  -            const char *name,
  -            const void *value,
  -            void **old);
  -
  -int map_read_properties(jk_map_t *m,
  -                        const char *f);
  -
  -int map_size(jk_map_t *m);
  -
  -char *map_name_at(jk_map_t *m,
  -                  int idex);
  -
  -void *map_value_at(jk_map_t *m,
  -                   int idex);
  -  
  +char **jk_map_split(struct jk_env *env,  jk_map_t *m,
  +                    struct jk_pool *pool, /* XXX will be removed */
  +                    const char *listStr, unsigned *list_len );
  +
  +int jk_map_str2int(struct jk_env *env, char *value);
  +
  +/* Just atof...
  +  double jk_map_getDouble(jk_env *env, jk_map_t *m, */
  +/*                         const char *name, double def); */
  +
  +
  +
  +/* ========== Reading and parsing properties ========== */
  +
  +/** Read the properties from the file, doing $(prop) substitution
  + */
  +int jk_map_readFileProperties(struct jk_env *env, jk_map_t *m,
  +                              const char *f);
  +
   /**
    *  Replace $(property) in value.
    * 
    */
  -char *map_replace_properties(const char *value, jk_map_t *m);
  +char *jk_map_replaceProperties(struct jk_env *env, jk_map_t *m,
  +                               struct jk_pool *resultPool, 
  +                               const char *value);
   
  -/** Get a string property, using the worker's style
  -    for properties.
  -    Example worker.ajp13.host=localhost.
  -*/
  -char *map_getStrProp(jk_map_t *m,
  -                     const char *objType,
  -                     const char *objName,
  -                     const char *pname,
  -                     char *def);
  -
  -int map_getIntProp(jk_map_t *m,
  -                   const char *objType,
  -                   const char *objName,
  -                   const char *pname,
  -                   const int def);
  -
  -double map_getDoubleProp(jk_map_t *m,
  -                         const char *objType,
  -                         const char *objName,
  -                         const char *pname,
  -                         const double def);
  -
  -char **map_getListProp(jk_map_t *m,
  -                       const char *objType,
  -                       const char *objName,
  -                       const char *pname, 
  -                       unsigned *size);
   
  -int map_copy(jk_pool_t *pool, jk_map_t * src, jk_map_t * dst);
   
   /* XXX Very strange hack to deal with special properties
    */
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>