Lines Matching defs:flatten

118 	Cxvariable_t*	flatten;	/* flatten source variable	*/
119 Flattenget_f flattengetf; /* flatten flatget() */
3789 "[-1ls5P?\n@(#)$Id: dss flatten query (AT&T Research) 2005-05-09 $\n]"
3804 flattenget(register Flatten_t* flatten, Cxvariable_t* var, void* data)
3812 if ((*flatten->cx->getf)(flatten->cx, &x, &flatten->value, NiL, NiL, data, flatten->cx->disc))
3817 if ((*ref->member->getf)(flatten->cx, &x, &flatten->value, NiL, NiL, NiL, flatten->cx->disc))
3824 if ((*flatten->cx->getf)(flatten->cx, &x, &flatten->value, NiL, NiL, data, flatten->cx->disc))
3827 return &flatten->value.value;
3835 flattennum2str(register Flatten_t* flatten, Cxvariable_t* var, void* data)
3839 if ((val = flattenget(flatten, var, data)) != &nullval)
3841 if (cxnum2str(flatten->cx, &var->format, (Cxinteger_t)val->number, &val->string.data))
3853 flattenstr2num(register Flatten_t* flatten, Cxvariable_t* var, void* data)
3858 if ((val = flattenget(flatten, var, data)) != &nullval)
3860 if (cxstr2num(flatten->cx, &var->format, val->string.data, val->string.size, &u))
3872 flattennull(Flatten_t* flatten, Cxvariable_t* var, void* data)
3878 * flatten query begin
3889 Flatten_t* flatten;
3923 if (!(vm = vmopen(Vmdcheap, Vmlast, 0)) || !(flatten = vmnewof(vm, 0, Flatten_t, 1, 0)))
3935 flatten->vm = vm;
3936 flatten->emptyspace = emptyspace;
3937 if (!(meth = dssmeth(schema, disc)) || !(flatten->dss = dssopen(0, 0, disc, meth)))
3943 flatten->cx = flatten->dss->cx;
3944 if (!flatten->cx->getf && !(flatten->cx->getf = cxcallout(flatten->cx, CX_GET, flatten->cx->state->type_void, flatten->cx->state->type_void, flatten->cx->disc)))
3950 flatten->getf = flatten->cx->getf;
3951 flatten->flat = (Flat_t*)flatten->dss->meth->data;
3953 fixed = flatten->flat->fixed;
3954 for (f = flatten->flat->fields; f; f = f->next)
3957 if (!(f->flatten = (Cxvariable_t*)dtmatch(cx->variables, f->variable.name)))
3963 else if (f->flatten->format.map)
3965 if (cxisnumber(f->variable.type) && cxisstring(f->flatten->type))
3967 else if (cxisstring(f->variable.type) && cxisnumber(f->flatten->type))
3980 if (flatten->flat->binary && (offset %= 8))
3984 (*disc->errorf)(NiL, disc, 2, "%s: record has %u unused pad byte%s", flatten->dss->meth->name, offset, offset == 1 ? "" : "s");
3987 if (!(flatten->file = dssfopen(flatten->dss, NiL, expr->op, DSS_FILE_WRITE, &flat_format)))
3989 expr->op = flatten->file->io;
3990 expr->data = flatten;
3993 if (flatten->file)
3994 dssfclose(flatten->file);
3995 if (flatten->dss)
3996 dssclose(flatten->dss);
4002 * flatten query action
4008 register Flatten_t* flatten = (Flatten_t*)expr->data;
4017 for (f = flatten->flat->fields; f; f = f->next)
4019 v = (*f->flattengetf)(flatten, f->flatten, data);
4020 while ((n = (*f->physical.type->externalf)(flatten->cx, f->physical.type, NiL, &f->physical.format, v, flatten->flat->valbuf, flatten->flat->valsiz, disc)) > flatten->flat->valsiz)
4023 if (!(flatten->flat->valbuf = newof(flatten->flat->valbuf, char, n, 0)))
4029 flatten->flat->valsiz = n;
4036 ccmapcpy(f->pam, flatten->flat->valbuf, flatten->flat->valbuf, n);
4042 sfputc(flatten->file->io, f->physical.format.quotebegin);
4046 for (e = (s = b = (unsigned char*)flatten->flat->valbuf) + n; s < e; s++)
4051 sfwrite(flatten->file->io, b, s - b);
4052 sfputc(flatten->file->io, f->physical.format.escape);
4053 sfputc(flatten->file->io, *s);
4060 sfwrite(flatten->file->io, b, s - b);
4061 sfputc(flatten->file->io, f->physical.format.quotebegin);
4062 sfputc(flatten->file->io, *s);
4066 sfwrite(flatten->file->io, b, s - b + 1);
4067 sfputc(flatten->file->io, *s);
4071 sfputc(flatten->file->io, *s);
4079 sfputc(flatten->file->io, f->physical.format.quoteend);
4081 sfwrite(flatten->file->io, b, s - b);
4083 sfputc(flatten->file->io, f->physical.format.quoteend);
4086 sfwrite(flatten->file->io, flatten->flat->valbuf, n);
4088 else if (flatten->emptyspace && f->physical.format.delimiter >= 0)
4089 sfputc(flatten->file->io, ' ');
4091 sfputc(flatten->file->io, f->physical.format.delimiter);
4097 * flatten query end
4103 Flatten_t* flatten = (Flatten_t*)expr->data;
4106 if (!flatten)
4110 if (dssfclose(flatten->file))
4112 if (dssclose(flatten->dss))
4114 vmclose(flatten->vm);
4120 { "flatten", "query to flatten input data to flat schema format",