Blender  V3.3
Classes | Typedefs | Functions | Variables
BLI_args.c File Reference

A general argument parsing module. More...

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_args.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"

Go to the source code of this file.

Classes

struct  bArgDoc
 
struct  bAKey
 
struct  bArgument
 
struct  bArgs
 

Typedefs

typedef struct bArgDoc bArgDoc
 
typedef struct bAKey bAKey
 
typedef struct bArgument bArgument
 

Functions

static uint case_strhash (const void *ptr)
 
static uint keyhash (const void *ptr)
 
static bool keycmp (const void *a, const void *b)
 
static bArgumentlookUp (struct bArgs *ba, const char *arg, int pass, int case_str)
 
bArgsBLI_args_create (int argc, const char **argv)
 
void BLI_args_destroy (struct bArgs *ba)
 
void BLI_args_pass_set (struct bArgs *ba, int current_pass)
 
void BLI_args_print (struct bArgs *ba)
 
static bArgDocinternalDocs (struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc)
 
static void internalAdd (struct bArgs *ba, const char *arg, int case_str, BA_ArgCallback cb, void *data, bArgDoc *d)
 
void BLI_args_add_case (struct bArgs *ba, const char *short_arg, int short_case, const char *long_arg, int long_case, const char *doc, BA_ArgCallback cb, void *data)
 
void BLI_args_add (struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data)
 
static void internalDocPrint (bArgDoc *d)
 
void BLI_args_print_arg_doc (struct bArgs *ba, const char *arg)
 
void BLI_args_print_other_doc (struct bArgs *ba)
 
bool BLI_args_has_other_doc (const struct bArgs *ba)
 
void BLI_args_parse (struct bArgs *ba, int pass, BA_ArgCallback default_cb, void *default_data)
 

Variables

static char NO_DOCS [] = "NO DOCUMENTATION SPECIFIED"
 

Detailed Description

A general argument parsing module.

Definition in file BLI_args.c.

Typedef Documentation

◆ bAKey

typedef struct bAKey bAKey

◆ bArgDoc

typedef struct bArgDoc bArgDoc

◆ bArgument

typedef struct bArgument bArgument

Function Documentation

◆ BLI_args_add()

void BLI_args_add ( struct bArgs ba,
const char *  short_arg,
const char *  long_arg,
const char *  doc,
BA_ArgCallback  cb,
void data 
)

Pass starts at 1, -1 means valid all the time short_arg or long_arg can be null to specify no short or long versions

Definition at line 214 of file BLI_args.c.

References BLI_args_add_case(), and data.

Referenced by main_args_setup().

◆ BLI_args_add_case()

void BLI_args_add_case ( struct bArgs ba,
const char *  short_arg,
int  short_case,
const char *  long_arg,
int  long_case,
const char *  doc,
BA_ArgCallback  cb,
void data 
)

Short_case and long_case specify if those arguments are case specific

Definition at line 194 of file BLI_args.c.

References data, internalAdd(), and internalDocs().

Referenced by BLI_args_add(), and main_args_setup().

◆ BLI_args_create()

bArgs* BLI_args_create ( int  argc,
const char **  argv 
)

◆ BLI_args_destroy()

void BLI_args_destroy ( struct bArgs ba)

Definition at line 114 of file BLI_args.c.

References BLI_freelistN(), BLI_ghash_free(), bArgs::docs, bArgs::items, MEM_freeN, and bArgs::passes.

Referenced by callback_main_atexit().

◆ BLI_args_has_other_doc()

bool BLI_args_has_other_doc ( const struct bArgs ba)

Definition at line 263 of file BLI_args.c.

References bArgs::docs, and ListBase::first.

Referenced by arg_handle_print_help().

◆ BLI_args_parse()

void BLI_args_parse ( struct bArgs ba,
int  pass,
BA_ArgCallback  default_cb,
void default_data 
)

Definition at line 273 of file BLI_args.c.

References Freestyle::a, bArgs::argc, bArgs::argv, BLI_assert, data, lookUp(), NULL, and bArgs::passes.

Referenced by main(), and main_args_setup_post().

◆ BLI_args_pass_set()

void BLI_args_pass_set ( struct bArgs ba,
int  current_pass 
)

The pass to use for BLI_args_add.

Definition at line 122 of file BLI_args.c.

References BLI_assert, and bArgs::current_pass.

Referenced by main_args_setup().

◆ BLI_args_print()

void BLI_args_print ( struct bArgs ba)

Definition at line 128 of file BLI_args.c.

References bArgs::argc, and bArgs::argv.

Referenced by arg_handle_debug_mode_set().

◆ BLI_args_print_arg_doc()

void BLI_args_print_arg_doc ( struct bArgs ba,
const char *  arg 
)

Definition at line 239 of file BLI_args.c.

References Freestyle::a, internalDocPrint(), and lookUp().

Referenced by arg_handle_print_help().

◆ BLI_args_print_other_doc()

void BLI_args_print_other_doc ( struct bArgs ba)

Definition at line 252 of file BLI_args.c.

References bArgs::docs, ListBase::first, and internalDocPrint().

Referenced by arg_handle_print_help().

◆ case_strhash()

static uint case_strhash ( const void ptr)
static

Definition at line 56 of file BLI_args.c.

References Freestyle::c, and ptr.

Referenced by keyhash().

◆ internalAdd()

static void internalAdd ( struct bArgs ba,
const char *  arg,
int  case_str,
BA_ArgCallback  cb,
void data,
bArgDoc d 
)
static

◆ internalDocPrint()

static void internalDocPrint ( bArgDoc d)
static

Definition at line 224 of file BLI_args.c.

Referenced by BLI_args_print_arg_doc(), and BLI_args_print_other_doc().

◆ internalDocs()

static bArgDoc* internalDocs ( struct bArgs ba,
const char *  short_arg,
const char *  long_arg,
const char *  doc 
)
static

Definition at line 136 of file BLI_args.c.

References BLI_addtail(), bArgs::docs, MEM_callocN, NO_DOCS, and NULL.

Referenced by BLI_args_add_case().

◆ keycmp()

static bool keycmp ( const void a,
const void b 
)
static

◆ keyhash()

static uint keyhash ( const void ptr)
static

Definition at line 69 of file BLI_args.c.

References bAKey::arg, case_strhash(), and ptr.

Referenced by BLI_args_create().

◆ lookUp()

static bArgument* lookUp ( struct bArgs ba,
const char *  arg,
int  pass,
int  case_str 
)
static

Variable Documentation

◆ NO_DOCS

char NO_DOCS[] = "NO DOCUMENTATION SPECIFIED"
static

Definition at line 21 of file BLI_args.c.

Referenced by internalDocs().