Demangle.c File Reference

#include "Demangle.h"
#include <ctype.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  work_stuff
struct  optable
struct  string

Defines

#define CURRENT_DEMANGLING_STYLE   work->options
#define CPLUS_MARKER   '$'
#define PRINT_ANSI_QUALIFIERS   (work -> options & DMGL_ANSI)
#define PRINT_ARG_TYPES   (work -> options & DMGL_PARAMS)
#define STRING_EMPTY(str)   ((str) -> b == (str) -> p)
#define PREPEND_BLANK(str)
#define APPEND_BLANK(str)
#define ARM_VTABLE_STRING   "__vtbl__"
#define ARM_VTABLE_STRLEN   8

Functions

void set_cplus_marker_for_demangling (int ch)
static char * mop_up (struct work_stuff *, string *, int)
static int demangle_template (struct work_stuff *work, const char **, string *, string *)
static int demangle_qualified (struct work_stuff *, const char **, string *, int, int)
static int demangle_class (struct work_stuff *, const char **, string *)
static int demangle_fund_type (struct work_stuff *, const char **, string *)
static int demangle_signature (struct work_stuff *, const char **, string *)
static int demangle_prefix (struct work_stuff *, const char **, string *)
static int gnu_special (struct work_stuff *, const char **, string *)
static int arm_special (struct work_stuff *, const char **, string *)
static void string_need (string *, int)
static void string_delete (string *)
static void string_init (string *)
static void string_clear (string *)
static void string_append (string *, const char *)
static void string_appends (string *, string *)
static void string_appendn (string *, const char *, int)
static void string_prepend (string *, const char *)
static void string_prependn (string *, const char *, int)
static int get_count (const char **, int *)
static int consume_count (const char **)
static int demangle_args (struct work_stuff *, const char **, string *)
static int do_type (struct work_stuff *, const char **, string *)
static int do_arg (struct work_stuff *, const char **, string *)
static void demangle_function_name (struct work_stuff *, const char **, string *, const char *)
static void remember_type (struct work_stuff *, const char *, int)
static void forget_types (struct work_stuff *)
static void string_prepends (string *, string *)
static int consume_count (char **type) const
int cplus_demangle_opname (char *opname, char *result, int options)
char * cplus_mangle_opname (char *opname, int options)
int cplus_match (char *mangled, char *text, int text_len) const
char * cplus_demangle (char *mangled, int options) const
static int arm_pt (struct work_stuff *work, const char *mangled, int n, const char **anchor, const char **args)
static void demangle_arm_pt (struct work_stuff *work, const char **mangled, int n, string *declp)
static int demangle_class_name (struct work_stuff *work, const char **mangled, string *declp)
static int get_count (char **type, int *count) const

Variables

enum demangling_styles current_demangling_style = gnu_demangling
static char cplus_markers [] = { CPLUS_MARKER, '.', '$', '\0' }


Define Documentation

#define APPEND_BLANK ( str   ) 

Value:

{if (!STRING_EMPTY(str)) \
                                   string_append(str, " ");}

Definition at line 182 of file Demangle.c.

Referenced by demangle_fund_type(), and do_type().

#define ARM_VTABLE_STRING   "__vtbl__"

Definition at line 185 of file Demangle.c.

Referenced by arm_special().

#define ARM_VTABLE_STRLEN   8

Definition at line 186 of file Demangle.c.

Referenced by arm_special().

#define CPLUS_MARKER   '$'

Definition at line 53 of file Demangle.c.

#define CURRENT_DEMANGLING_STYLE   work->options

Definition at line 30 of file Demangle.c.

#define PREPEND_BLANK ( str   ) 

Value:

{if (!STRING_EMPTY(str)) \
                                   string_prepend(str, " ");}

Definition at line 180 of file Demangle.c.

#define PRINT_ANSI_QUALIFIERS   (work -> options & DMGL_ANSI)

Definition at line 82 of file Demangle.c.

Referenced by demangle_fund_type(), and do_type().

#define PRINT_ARG_TYPES   (work -> options & DMGL_PARAMS)

Definition at line 83 of file Demangle.c.

Referenced by demangle_args(), and demangle_signature().

#define STRING_EMPTY ( str   )     ((str) -> b == (str) -> p)

Definition at line 179 of file Demangle.c.

Referenced by demangle_qualified(), and do_type().


Function Documentation

static int arm_pt ( struct work_stuff work,
const char *  mangled,
int  n,
const char **  anchor,
const char **  args 
) [static]

Definition at line 1052 of file Demangle.c.

References ARM_DEMANGLING, consume_count(), and len.

Referenced by demangle_arm_pt().

static int arm_special ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 1571 of file Demangle.c.

References ARM_VTABLE_STRING, ARM_VTABLE_STRLEN, consume_count(), n, string_append(), string_prepend(), and string_prependn().

Referenced by demangle_prefix().

static int consume_count ( char **  type  )  const [static]

Definition at line 288 of file Demangle.c.

static int consume_count ( const char **   )  [static]

Referenced by arm_pt(), arm_special(), demangle_args(), demangle_class_name(), demangle_prefix(), demangle_qualified(), demangle_template(), do_type(), and gnu_special().

char* cplus_demangle ( char *  mangled,
int  options 
) const

Definition at line 494 of file Demangle.c.

References AUTO_DEMANGLING, current_demangling_style, demangle_prefix(), demangle_signature(), DMGL_STYLE_MASK, GNU_DEMANGLING, gnu_special(), int, mop_up(), NULL, string_init(), and string_prepend().

int cplus_demangle_opname ( char *  opname,
char *  result,
int  options 
)

Definition at line 303 of file Demangle.c.

References cplus_markers, do_type(), i, int, len, NULL, work_stuff::options, out, strcat(), string_delete(), and type.

char* cplus_mangle_opname ( char *  opname,
int  options 
)

Definition at line 432 of file Demangle.c.

References DMGL_ANSI, flags, i, int, len, and out.

int cplus_match ( char *  mangled,
char *  text,
int  text_len 
) const

Definition at line 453 of file Demangle.c.

static int demangle_args ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 2331 of file Demangle.c.

References ARM_DEMANGLING, consume_count(), do_arg(), get_count(), LUCID_DEMANGLING, work_stuff::ntypes, PRINT_ARG_TYPES, string_append(), string_appends(), string_delete(), t, and work_stuff::typevec.

Referenced by demangle_signature(), and do_type().

static void demangle_arm_pt ( struct work_stuff work,
const char **  mangled,
int  n,
string declp 
) [static]

Definition at line 1074 of file Demangle.c.

References arm_pt(), do_type(), string::p, p, string_append(), string_appendn(), string_appends(), string_clear(), string_delete(), and string_init().

Referenced by demangle_class_name(), and demangle_prefix().

static int demangle_class ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 1164 of file Demangle.c.

References work_stuff::constructor, demangle_class_name(), work_stuff::destructor, string_delete(), string_init(), string_prepend(), and string_prepends().

Referenced by demangle_signature().

static int demangle_class_name ( struct work_stuff work,
const char **  mangled,
string declp 
) [static]

Definition at line 1110 of file Demangle.c.

References consume_count(), demangle_arm_pt(), and n.

Referenced by demangle_class(), and demangle_fund_type().

static void demangle_function_name ( struct work_stuff ,
const char **  ,
string ,
const char *   
) [static]

Definition at line 2459 of file Demangle.c.

References ARM_DEMANGLING, string::b, b, work_stuff::constructor, cplus_markers, work_stuff::destructor, i, if(), int, len, LUCID_DEMANGLING, NULL, out, string::p, p, string_append(), string_appendn(), string_clear(), string_need(), and type.

Referenced by demangle_prefix().

static int demangle_fund_type ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 2074 of file Demangle.c.

References APPEND_BLANK, demangle_class_name(), demangle_template(), PRINT_ANSI_QUALIFIERS, result(), and string_append().

Referenced by do_type().

static int demangle_prefix ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 1228 of file Demangle.c.

References ARM_DEMANGLING, arm_special(), work_stuff::constructor, consume_count(), cplus_markers, demangle_arm_pt(), demangle_function_name(), i, LUCID_DEMANGLING, marker, NULL, work_stuff::static_type, and string_append().

Referenced by cplus_demangle().

static int demangle_qualified ( struct work_stuff ,
const char **  ,
string ,
int  ,
int   
) [static]

Definition at line 1653 of file Demangle.c.

References consume_count(), demangle_template(), work_stuff::destructor, num, p, result(), string_append(), string_appendn(), string_appends(), string_delete(), STRING_EMPTY, string_init(), and string_prepends().

Referenced by demangle_signature(), do_type(), and gnu_special().

static int demangle_signature ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 609 of file Demangle.c.

References ARM_DEMANGLING, AUTO_DEMANGLING, work_stuff::const_type, demangle_args(), demangle_class(), demangle_qualified(), demangle_template(), work_stuff::destructor, forget_types(), GNU_DEMANGLING, LUCID_DEMANGLING, NULL, PRINT_ARG_TYPES, remember_type(), work_stuff::static_type, string_append(), string_appends(), string_delete(), string_init(), string_prepend(), and string_prepends().

Referenced by cplus_demangle().

static int demangle_template ( struct work_stuff work,
const char **  ,
string ,
string  
) [static]

Definition at line 820 of file Demangle.c.

References consume_count(), do_type(), get_count(), i, string::p, string_append(), string_appendn(), string_appends(), string_delete(), and val.

Referenced by demangle_fund_type(), demangle_qualified(), demangle_signature(), and gnu_special().

static int do_arg ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 2221 of file Demangle.c.

References do_type(), remember_type(), result(), and start.

Referenced by demangle_args().

static int do_type ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 1842 of file Demangle.c.

References APPEND_BLANK, consume_count(), demangle_args(), demangle_fund_type(), demangle_qualified(), get_count(), n, work_stuff::ntypes, p, PRINT_ANSI_QUALIFIERS, result(), string_append(), string_appendn(), string_appends(), string_delete(), STRING_EMPTY, string_init(), string_prepend(), string_prependn(), and work_stuff::typevec.

Referenced by cplus_demangle_opname(), demangle_arm_pt(), demangle_template(), and do_arg().

static void forget_types ( struct work_stuff  )  [static]

Definition at line 2272 of file Demangle.c.

References free(), i, work_stuff::ntypes, NULL, and work_stuff::typevec.

Referenced by demangle_signature(), and mop_up().

static int get_count ( char **  type,
int *  count 
) const [static]

Definition at line 1803 of file Demangle.c.

References n, and p.

static int get_count ( const char **  ,
int *   
) [static]

Referenced by demangle_args(), demangle_template(), and do_type().

static int gnu_special ( struct work_stuff ,
const char **  ,
string  
) [static]

Definition at line 1412 of file Demangle.c.

References buf, consume_count(), cplus_demangle(), cplus_markers, demangle_qualified(), demangle_template(), work_stuff::destructor, free(), method, n, NULL, p, sprintf(), string_append(), and string_appendn().

Referenced by cplus_demangle().

static char * mop_up ( struct work_stuff ,
string ,
int   
) [static]

Definition at line 547 of file Demangle.c.

References b, forget_types(), free(), NULL, string_appendn(), string_delete(), and work_stuff::typevec.

Referenced by cplus_demangle().

static void remember_type ( struct work_stuff ,
const char *  ,
int   
) [static]

Definition at line 2240 of file Demangle.c.

References malloc(), work_stuff::ntypes, realloc(), work_stuff::typevec, and work_stuff::typevec_size.

Referenced by demangle_signature(), and do_arg().

void set_cplus_marker_for_demangling ( int  ch  ) 

Definition at line 61 of file Demangle.c.

References cplus_markers.

static void string_append ( string ,
const char *   
) [static]

Definition at line 2674 of file Demangle.c.

References n, NULL, and string_need().

Referenced by arm_special(), demangle_args(), demangle_arm_pt(), demangle_function_name(), demangle_fund_type(), demangle_prefix(), demangle_qualified(), demangle_signature(), demangle_template(), do_type(), and gnu_special().

static void string_appendn ( string ,
const char *  ,
int   
) [static]

Definition at line 2703 of file Demangle.c.

References string_need().

Referenced by demangle_arm_pt(), demangle_function_name(), demangle_qualified(), demangle_template(), do_type(), gnu_special(), and mop_up().

static void string_appends ( string ,
string  
) [static]

Definition at line 2688 of file Demangle.c.

References n, and string_need().

Referenced by demangle_args(), demangle_arm_pt(), demangle_qualified(), demangle_signature(), demangle_template(), and do_type().

static void string_clear ( string  )  [static]

Definition at line 2656 of file Demangle.c.

Referenced by demangle_arm_pt(), and demangle_function_name().

static void string_delete ( string  )  [static]

Definition at line 2638 of file Demangle.c.

References free(), and NULL.

Referenced by cplus_demangle_opname(), demangle_args(), demangle_arm_pt(), demangle_class(), demangle_qualified(), demangle_signature(), demangle_template(), do_type(), and mop_up().

static void string_init ( string  )  [static]

Definition at line 2649 of file Demangle.c.

References NULL.

Referenced by cplus_demangle(), demangle_arm_pt(), demangle_class(), demangle_qualified(), demangle_signature(), and do_type().

static void string_need ( string ,
int   
) [static]

Definition at line 2611 of file Demangle.c.

References malloc(), NULL, and realloc().

Referenced by demangle_function_name(), string_append(), string_appendn(), string_appends(), and string_prependn().

static void string_prepend ( string ,
const char *   
) [static]

Definition at line 2717 of file Demangle.c.

References NULL, and string_prependn().

Referenced by arm_special(), cplus_demangle(), demangle_class(), demangle_signature(), and do_type().

static void string_prependn ( string ,
const char *  ,
int   
) [static]

Definition at line 2738 of file Demangle.c.

References string_need().

Referenced by arm_special(), do_type(), string_prepend(), and string_prepends().

static void string_prepends ( string ,
string  
) [static]

Definition at line 2728 of file Demangle.c.

References string_prependn().

Referenced by demangle_class(), demangle_qualified(), and demangle_signature().


Variable Documentation

char cplus_markers[] = { CPLUS_MARKER, '.', '$', '\0' } [static]

Definition at line 58 of file Demangle.c.

Referenced by cplus_demangle_opname(), demangle_function_name(), demangle_prefix(), gnu_special(), and set_cplus_marker_for_demangling().

enum demangling_styles current_demangling_style = gnu_demangling

Definition at line 56 of file Demangle.c.


Generated on Tue Jul 5 15:57:19 2011 for ROOT_528-00b_version by  doxygen 1.5.1