本文整理汇总了C++中bu_vls_free函数的典型用法代码示例。如果您正苦于以下问题:C++ bu_vls_free函数的具体用法?C++ bu_vls_free怎么用?C++ bu_vls_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bu_vls_free函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fbo_getcursor_tcl
/*
*
* Usage:
* procname getcursor
*/
HIDDEN int
fbo_getcursor_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
{
struct fb_obj *fbop = (struct fb_obj *)clientData;
int status;
int mode;
int x, y;
struct bu_vls vls;
if (argc != 2) {
bu_vls_init(&vls);
bu_vls_printf(&vls, "helplib fb_getcursor");
Tcl_Eval(interp, bu_vls_addr(&vls));
bu_vls_free(&vls);
return TCL_ERROR;
}
status = fb_getcursor(fbop->fbo_fbs.fbs_fbp, &mode, &x, &y);
if (status == 0) {
bu_vls_init(&vls);
bu_vls_printf(&vls, "%d %d %d", mode, x, y);
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_OK;
}
return TCL_ERROR;
}
示例2: _bu_close_files
static void
_bu_close_files()
{
struct _bu_tf_list *popped;
if (!_bu_tf) {
return;
}
/* close all files, free their nodes, and unlink */
while (BU_LIST_WHILE(popped, _bu_tf_list, &(_bu_tf->l))) {
BU_LIST_DEQUEUE(&(popped->l));
if (popped) {
if (popped->fd != -1) {
close(popped->fd);
popped->fd = -1;
}
if (BU_VLS_IS_INITIALIZED(&popped->fn) && bu_vls_addr(&popped->fn)) {
unlink(bu_vls_addr(&popped->fn));
bu_vls_free(&popped->fn);
}
bu_free(popped, "free bu_temp_file node");
}
}
/* free the head */
if (_bu_tf->fd != -1) {
close(_bu_tf->fd);
_bu_tf->fd = -1;
}
if (BU_VLS_IS_INITIALIZED(&_bu_tf->fn) && bu_vls_addr(&_bu_tf->fn)) {
unlink(bu_vls_addr(&_bu_tf->fn));
bu_vls_free(&_bu_tf->fn);
}
bu_free(_bu_tf, "free bu_temp_file head");
}
示例3: bu_open_mapped_file_with_path
struct bu_mapped_file *
bu_open_mapped_file_with_path(char *const *path, const char *name, const char *appl)
/* file name */
/* non-null only when app. will use 'apbuf' */
{
char * const *pathp = path;
struct bu_vls str = BU_VLS_INIT_ZERO;
struct bu_mapped_file *ret;
BU_ASSERT_PTR(name, !=, NULL);
BU_ASSERT_PTR(pathp, !=, NULL);
/* Do not resort to path for a rooted filename */
if (name[0] == '/')
return bu_open_mapped_file(name, appl);
/* Try each path prefix in sequence */
for (; *pathp != NULL; pathp++) {
bu_vls_strcpy(&str, *pathp);
bu_vls_putc(&str, '/');
bu_vls_strcat(&str, name);
ret = bu_open_mapped_file(bu_vls_addr(&str), appl);
if (ret) {
bu_vls_free(&str);
return ret;
}
}
/* Failure, none of the opens succeeded */
bu_vls_free(&str);
return (struct bu_mapped_file *)NULL;
}
示例4: cho_deleteProc
HIDDEN void
cho_deleteProc(ClientData clientData)
{
struct bu_cmdhist_obj *chop = (struct bu_cmdhist_obj *)clientData;
struct bu_cmdhist *curr, *next;
/* free list of commands */
curr = BU_LIST_NEXT(bu_cmdhist, &chop->cho_head.l);
while (BU_LIST_NOT_HEAD(curr, &chop->cho_head.l)) {
curr = BU_LIST_NEXT(bu_cmdhist, &chop->cho_head.l);
next = BU_LIST_PNEXT(bu_cmdhist, curr);
bu_vls_free(&curr->h_command);
BU_LIST_DEQUEUE(&curr->l);
bu_free((genptr_t)curr, "cho_deleteProc: curr");
curr = next;
}
bu_vls_free(&chop->cho_name);
bu_vls_free(&chop->cho_head.h_command);
BU_LIST_DEQUEUE(&chop->l);
BU_PUT(chop, struct bu_cmdhist_obj);
}
示例5: X_dm
static int
X_dm(int argc,
char *argv[])
{
if (!strcmp(argv[0], "set")) {
struct bu_vls vls;
bu_vls_init(&vls);
if (argc < 2) {
/* Bare set command, print out current settings */
bu_vls_struct_print2(&vls, "dm_X internal variables", X_vparse, (const char *)dmp );
} else if (argc == 2) {
bu_vls_struct_item_named(&vls, X_vparse, argv[1], (const char *)dmp, ',');
} else {
struct bu_vls tmp_vls;
bu_vls_init(&tmp_vls);
bu_vls_printf(&tmp_vls, "%s=\"", argv[1]);
bu_vls_from_argv(&tmp_vls, argc-2, (const char **)argv+2);
bu_vls_putc(&tmp_vls, '\"');
bu_struct_parse(&tmp_vls, X_vparse, (char *)dmp);
bu_vls_free(&tmp_vls);
}
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_OK;
}
return common_dm(argc, argv);
}
示例6: units_name_matches
/**
* compares an input units string to a reference units name and
* returns truthfully if they match. the comparison ignores any
* embedded whitespace and is case insensitive.
*/
static int
units_name_matches(const char *input, const char *name)
{
const char *cp;
int match;
struct bu_vls normalized_input = BU_VLS_INIT_ZERO;
struct bu_vls normalized_name = BU_VLS_INIT_ZERO;
/* convert NULL */
if (!input)
input = "";
if (!name)
name = "";
/* skip spaces */
while (isspace((unsigned char)*input))
input++;
while (isspace((unsigned char)*name))
name++;
/* quick exit */
if (tolower((unsigned char)input[0]) != tolower((unsigned char)name[0]))
return 0;
cp = input;
/* skip spaces, convert to lowercase */
while (*cp != '\0') {
if (!isspace((unsigned char)*cp))
bu_vls_putc(&normalized_input, tolower((unsigned char)*cp));
cp++;
}
cp = name;
/* skip spaces, convert to lowercase */
while (*cp != '\0') {
if (!isspace((unsigned char)*cp))
bu_vls_putc(&normalized_name, tolower((unsigned char)*cp));
cp++;
}
/* trim any trailing 's' for plurality */
if (bu_vls_addr(&normalized_input)[bu_vls_strlen(&normalized_input)-1] == 's') {
bu_vls_trunc(&normalized_input, -1);
}
if (bu_vls_addr(&normalized_name)[bu_vls_strlen(&normalized_name)-1] == 's') {
bu_vls_trunc(&normalized_name, -1);
}
/* compare */
match = BU_STR_EQUAL(bu_vls_addr(&normalized_input), bu_vls_addr(&normalized_name));
bu_vls_free(&normalized_input);
bu_vls_free(&normalized_name);
return match;
}
示例7: ged_exists
/**
* Checks for the existence of a specified object.
*/
int
ged_exists(struct ged *gedp, int argc, const char *argv_orig[])
{
/* struct directory *dp;*/
static const char *usage = "object";
struct exists_data ed;
struct bu_vls message = BU_VLS_INIT_ZERO;
int result;
char **argv = bu_dup_argv(argc, argv_orig);
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
/* initialize result */
bu_vls_trunc(gedp->ged_result_str, 0);
/* must be wanting help */
if (argc == 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv_orig[0], usage);
return GED_HELP;
}
/*
if (argc != 2) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv_orig[0], usage);
return GED_ERROR;
}
*/
ed.t_wp = &argv[1];
ed.gedp = gedp;
ed.t_wp_op = NULL;
ed.message = &message;
result = oexpr(t_lex(*(ed.t_wp), &ed), &ed);
if (result)
bu_vls_printf(gedp->ged_result_str, "1");
else
bu_vls_printf(gedp->ged_result_str, "0");
if (bu_vls_strlen(ed.message) > 0) {
bu_vls_printf(gedp->ged_result_str, "%s", bu_vls_addr(ed.message));
bu_vls_free(&message);
return GED_ERROR;
}
bu_vls_free(&message);
if (*(ed.t_wp) != NULL && *++(ed.t_wp) != NULL) {
return GED_ERROR;
} else {
return GED_OK;
}
}
示例8: fbo_listen_tcl
/*
* Listen for framebuffer clients.
*
* Usage:
* procname listen port
*
* Returns the port number actually used.
*
*/
HIDDEN int
fbo_listen_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
{
struct fb_obj *fbop = (struct fb_obj *)clientData;
struct bu_vls vls;
bu_vls_init(&vls);
if (fbop->fbo_fbs.fbs_fbp == FBIO_NULL) {
bu_vls_printf(&vls, "%s listen: framebuffer not open!\n", argv[0]);
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_ERROR;
}
/* return the port number */
if (argc == 2) {
bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port);
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_OK;
}
if (argc == 3) {
int port;
if (sscanf(argv[2], "%d", &port) != 1) {
Tcl_AppendResult(interp, "listen: bad value - ", argv[2], "\n", (char *)NULL);
return TCL_ERROR;
}
if (port >= 0)
fbs_open(interp, &fbop->fbo_fbs, port);
else {
fbs_close(interp, &fbop->fbo_fbs);
}
bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port);
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_OK;
}
bu_vls_printf(&vls, "helplib fb_listen");
Tcl_Eval(interp, bu_vls_addr(&vls));
bu_vls_free(&vls);
return TCL_ERROR;
}
示例9: bu_cmdhist_add
int
bu_cmdhist_add(void *clientData, int argc, const char **argv)
{
struct bu_cmdhist_obj *chop = (struct bu_cmdhist_obj *)clientData;
struct bu_vls vls = BU_VLS_INIT_ZERO;
struct timeval zero;
if (argc != 3) {
bu_log("ERROR: expecting only three arguments\n");
return BRLCAD_ERROR;
}
if (UNLIKELY(argv[2][0] == '\n' || argv[2][0] == '\0'))
return BRLCAD_OK;
bu_vls_strcpy(&vls, argv[2]);
if (argv[2][strlen(argv[2])-1] != '\n')
bu_vls_putc(&vls, '\n');
zero.tv_sec = zero.tv_usec = 0L;
cmdhist_record(chop, &vls, &zero, &zero, BRLCAD_OK);
bu_vls_free(&vls);
/* newly added command is in chop->cho_curr */
return BRLCAD_OK;
}
示例10: plot_loadMatrix
/**
* P L O T _ L O A D M A T R I X
*
* Load a new transformation matrix. This will be followed by
* many calls to plot_draw().
*/
HIDDEN int
plot_loadMatrix(struct dm *dmp, fastf_t *mat, int which_eye)
{
Tcl_Obj *obj;
if (!dmp)
return TCL_ERROR;
obj = Tcl_GetObjResult(dmp->dm_interp);
if (Tcl_IsShared(obj))
obj = Tcl_DuplicateObj(obj);
if (((struct plot_vars *)dmp->dm_vars.priv_vars)->debug) {
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
Tcl_AppendStringsToObj(obj, "plot_loadMatrix()\n", (char *)NULL);
bu_vls_printf(&tmp_vls, "which eye = %d\t", which_eye);
bu_vls_printf(&tmp_vls, "transformation matrix = \n");
bu_vls_printf(&tmp_vls, "%g %g %g %g\n", mat[0], mat[4], mat[8], mat[12]);
bu_vls_printf(&tmp_vls, "%g %g %g %g\n", mat[1], mat[5], mat[9], mat[13]);
bu_vls_printf(&tmp_vls, "%g %g %g %g\n", mat[2], mat[6], mat[10], mat[14]);
bu_vls_printf(&tmp_vls, "%g %g %g %g\n", mat[3], mat[7], mat[11], mat[15]);
Tcl_AppendStringsToObj(obj, bu_vls_addr(&tmp_vls), (char *)NULL);
bu_vls_free(&tmp_vls);
}
MAT_COPY(plotmat, mat);
Tcl_SetObjResult(dmp->dm_interp, obj);
return TCL_OK;
}
示例11: rt_pr_partitions
void
rt_pr_partitions(const struct rt_i *rtip, register const struct partition *phead, const char *title)
{
register const struct partition *pp;
struct bu_vls v = BU_VLS_INIT_ZERO;
RT_CHECK_RTI(rtip);
bu_log_indent_vls(&v);
bu_vls_strcat(&v, "------");
bu_vls_strcat(&v, title);
bu_vls_strcat(&v, "\n");
bu_log_indent_delta(2);
for (pp = phead->pt_forw; pp != phead; pp = pp->pt_forw) {
RT_CHECK_PT(pp);
rt_pr_pt_vls(&v, rtip, pp);
}
bu_log_indent_delta(-2);
bu_log_indent_vls(&v);
bu_vls_strcat(&v, "------\n");
bu_log("%s", bu_vls_addr(&v));
bu_vls_free(&v);
}
示例12: Wgl_dm_init
int
Wgl_dm_init(struct dm_list *o_dm_list,
int argc,
char *argv[])
{
struct bu_vls vls;
dm_var_init(o_dm_list);
/* register application provided routines */
cmd_hook = Wgl_dm;
Tk_DeleteGenericHandler(doEvent, (ClientData)NULL);
if ((dmp = dm_open(interp, DM_TYPE_WGL, argc-1, argv)) == DM_NULL)
return TCL_ERROR;
/*XXXX this eventually needs to move into Wgl's private structure */
dmp->dm_vp = &view_state->vs_vop->vo_scale;
dmp->dm_perspective = mged_variables->mv_perspective_mode;
eventHandler = Wgl_doevent;
Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
(void)DM_CONFIGURE_WIN(dmp);
bu_vls_init(&vls);
bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));
Tcl_Eval(interp, bu_vls_addr(&vls));
bu_vls_free(&vls);
return TCL_OK;
}
示例13: f_red
/*
*
* Get editing string and call ged_red
*/
int
f_red(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int argc, const char *argv[])
{
const char **av;
struct bu_vls editstring = BU_VLS_INIT_ZERO;
CHECK_DBI_NULL;
if (argc != 2) {
Tcl_Eval(interpreter, "help red");
return TCL_ERROR;
}
get_editor_string(&editstring);
av = (const char **)bu_calloc(4, sizeof(char *), "f_red: av");
av[0] = argv[0];
av[1] = "-E";
av[2] = bu_vls_addr(&editstring);
av[3] = argv[1];
if ( ged_red(gedp, 4, (const char **)av) == GED_ERROR ) {
Tcl_AppendResult(interpreter, "Error: ", bu_vls_addr(gedp->ged_result_str), (char *)NULL);
} else {
Tcl_AppendResult(interpreter, bu_vls_addr(gedp->ged_result_str), (char *)NULL);
}
bu_vls_free(&editstring);
bu_free((void *)av, "f_red: av");
return TCL_OK;
}
示例14: rt_pr_region
void
rt_pr_region(register const struct region *rp)
{
struct bu_vls v = BU_VLS_INIT_ZERO;
RT_CK_REGION(rp);
bu_log("REGION %s (bit %d)\n", rp->reg_name, rp->reg_bit);
bu_log("instnum=%ld, id=%d, air=%d, gift_material=%d, los=%d\n",
rp->reg_instnum,
rp->reg_regionid, rp->reg_aircode,
rp->reg_gmater, rp->reg_los);
if (rp->reg_is_fastgen != REGION_NON_FASTGEN) {
bu_log("reg_is_fastgen = %s mode\n",
rp->reg_is_fastgen == REGION_FASTGEN_PLATE ?
"plate" : "volume");
}
if (rp->reg_mater.ma_color_valid)
bu_log("Color %d %d %d\n",
(int)rp->reg_mater.ma_color[0]*255,
(int)rp->reg_mater.ma_color[1]*255,
(int)rp->reg_mater.ma_color[2]*255);
if (rp->reg_mater.ma_temperature > 0)
bu_log("Temperature %g degrees K\n", INTCLAMP(rp->reg_mater.ma_temperature));
if (rp->reg_mater.ma_shader && rp->reg_mater.ma_shader[0] != '\0')
bu_log("Shader '%s'\n", rp->reg_mater.ma_shader);
rt_pr_tree_vls(&v, rp->reg_treetop);
bu_log("%s %ld %s\n", rp->reg_name,
rp->reg_instnum, bu_vls_addr(&v));
bu_vls_free(&v);
}
示例15: X_dm_init
int
X_dm_init(struct dm_list *o_dm_list,
int argc,
char *argv[])
{
struct bu_vls vls;
dm_var_init(o_dm_list);
/* register application provided routines */
cmd_hook = X_dm;
Tk_DeleteGenericHandler(doEvent, (ClientData)NULL);
if ((dmp = dm_open(interp, DM_TYPE_X, argc-1, argv)) == DM_NULL)
return TCL_ERROR;
/* keep display manager in sync */
dmp->dm_perspective = mged_variables->mv_perspective_mode;
eventHandler = X_doevent;
Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
(void)DM_CONFIGURE_WIN(dmp);
bu_vls_init(&vls);
bu_vls_printf(&vls, "mged_bind_dm %s", bu_vls_addr(&pathName));
Tcl_Eval(interp, bu_vls_addr(&vls));
bu_vls_free(&vls);
return TCL_OK;
}