本文整理汇总了C++中ejsCreateNumber函数的典型用法代码示例。如果您正苦于以下问题:C++ ejsCreateNumber函数的具体用法?C++ ejsCreateNumber怎么用?C++ ejsCreateNumber使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ejsCreateNumber函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ejsThrowReferenceError
/*
Function to iterate and return the next element value.
NOTE: this is not a method of Array. Rather, it is a callback function for Iterator
*/
static EjsObj *nextValue(Ejs *ejs, EjsIterator *ip, int argc, EjsObj **argv)
{
EjsFile *fp;
fp = (EjsFile*) ip->target;
if (!ejsIs(ejs, fp, File)) {
ejsThrowReferenceError(ejs, "Wrong type");
return 0;
}
if (ip->index < fp->info.size) {
#if !ME_CC_MMU || 1
if (mprSeekFile(fp->file, SEEK_CUR, 0) != ip->index) {
if (mprSeekFile(fp->file, SEEK_SET, ip->index) != ip->index) {
ejsThrowIOError(ejs, "Cannot seek to %d", ip->index);
return 0;
}
}
ip->index++;
return (EjsObj*) ejsCreateNumber(ejs, mprGetFileChar(fp->file));
#else
return (EjsObj*) ejsCreateNumber(ejs, fp->mapped[ip->index++]);
#endif
}
#if ME_CC_MMU && FUTURE
unmapFile(fp);
fp->mapped = 0;
#endif
ejsThrowStopIteration(ejs);
return 0;
}
示例2: partition
/*
Quick sort partition
*/
static int partition(Ejs *ejs, EjsArray *array, EjsFunction *compare, int direction, int p, int r)
{
EjsString *sx, *so;
EjsNumber *result;
EjsAny *argv[3], *tmp;
EjsObj *x;
int i, j, order;
x = array->data[r];
sx = 0;
if (compare) {
if ((argv[1] = ejsCreateNumber(ejs, r)) == 0) {
return 0;
}
} else {
if ((sx = ejsToString(ejs, x)) == 0) {
return 0;
}
}
j = p - 1;
for (i = p; i < r; i++) {
if (compare) {
argv[0] = array;
argv[2] = ejsCreateNumber(ejs, i);
result = ejsRunFunction(ejs, compare, NULL, 3, argv);
if (!ejsIs(ejs, result, Number)) {
return 0;
}
order = ejsGetInt(ejs, result);
} else {
if ((so = ejsToString(ejs, array->data[i])) == 0) {
return 0;
}
order = ejsCompareString(ejs, sx, so);
}
order *= direction;
if (order > 0) {
j = j + 1;
tmp = array->data[j];
array->data[j] = array->data[i];
array->data[i] = tmp;
}
}
array->data[r] = array->data[j + 1];
array->data[j + 1] = x;
return j + 1;
}
示例3: send
/*
function send(...content): Number
*/
static EjsNumber *ws_send(Ejs *ejs, EjsWebSocket *ws, int argc, EjsObj **argv)
{
EjsArray *args;
EjsByteArray *ba;
EjsAny *arg;
ssize nbytes;
int i;
args = (EjsArray*) argv[0];
if (ws->conn->state < HTTP_STATE_PARSED && !waitForHttpState(ws, HTTP_STATE_PARSED, -1, 1)) {
return ESV(null);
}
nbytes = 0;
for (i = 0; i < args->length; i++) {
if ((arg = ejsGetProperty(ejs, args, i)) != 0) {
if (ejsIs(ejs, arg, ByteArray)) {
ba = (EjsByteArray*) arg;
nbytes = ejsGetByteArrayAvailableData(ba);
nbytes = httpSendBlock(ws->conn, WS_MSG_BINARY, (cchar*) &ba->value[ba->readPosition], nbytes, HTTP_BLOCK);
} else {
nbytes = httpSend(ws->conn, ejsToMulti(ejs, arg));
}
if (nbytes < 0) {
return ESV(null);
}
}
}
return ejsCreateNumber(ejs, (MprNumber) nbytes);
}
示例4: components
/*
Break a uri into components
function components(): Object
*/
static EjsObj *uri_components(Ejs *ejs, EjsUri *up, int argc, EjsObj **argv)
{
EjsObj *obj;
HttpUri *uri;
uri = up->uri;
obj = ejsCreateEmptyPot(ejs);
if (uri->scheme) {
ejsSetPropertyByName(ejs, obj, EN("scheme"), ejsCreateStringFromAsc(ejs, uri->scheme));
}
if (uri->host) {
ejsSetPropertyByName(ejs, obj, EN("host"), ejsCreateStringFromAsc(ejs, uri->host));
}
if (uri->port > 0) {
ejsSetPropertyByName(ejs, obj, EN("port"), ejsCreateNumber(ejs, uri->port));
}
if (uri->path) {
ejsSetPropertyByName(ejs, obj, EN("path"), ejsCreateStringFromAsc(ejs, uri->path));
}
if (uri->reference) {
ejsSetPropertyByName(ejs, obj, EN("reference"), ejsCreateStringFromAsc(ejs, uri->reference));
}
if (uri->query) {
ejsSetPropertyByName(ejs, obj, EN("query"), ejsCreateStringFromAsc(ejs, uri->query));
}
return obj;
}
示例5: mprAssert
/*
* Search for an item using strict equality "===". This call searches from
* the end of the array for the specified element.
* @return Returns the items index into the array if found, otherwise -1.
*
* function lastIndexOf(element: Object, fromIndex: Number = -1): Number
*/
static EjsVar *lastArrayIndexOf(Ejs *ejs, EjsArray *ap, int argc, EjsVar **argv)
{
EjsVar *element;
int i, start;
mprAssert(argc == 1 || argc == 2);
element = argv[0];
start = ((argc == 2) ? (int) ((EjsNumber*) argv[1])->value : ap->length - 1);
if (start < 0) {
start += ap->length;
}
if (start >= ap->length) {
start = ap->length - 1;
}
if (start < 0) {
return (EjsVar*) ejs->minusOneValue;
}
for (i = start; i >= 0; i--) {
if (compareArrayElement(ejs, ap->data[i], element)) {
return (EjsVar*) ejsCreateNumber(ejs, i);
}
}
return (EjsVar*) ejs->minusOneValue;
}
示例6: indexOf
/*
Search for an item using strict equality "===". This call searches from
the start of the array for the specified element.
@return Returns the items index into the array if found, otherwise -1.
function indexOf(element: Object, startIndex: Number = 0): Number
*/
static EjsNumber *indexOfArray(Ejs *ejs, EjsArray *ap, int argc, EjsObj **argv)
{
EjsObj *element;
int i, start;
assert(argc == 1 || argc == 2);
element = argv[0];
start = (argc == 2) ? (int) ((EjsNumber*) argv[1])->value : 0;
if (start < 0) {
start += ap->length;
}
if (start >= ap->length) {
return ESV(minusOne);
}
if (start < 0) {
start = 0;
}
for (i = start; i < ap->length; i++) {
if (compareArrayElement(ejs, ap->data[i], element)) {
return ejsCreateNumber(ejs, i);
}
}
return ESV(minusOne);
}
示例7: ejsThrowReferenceError
/*
Function to iterate and return the next element name.
NOTE: this is not a method of Array. Rather, it is a callback function for Iterator
*/
static EjsNumber *nextArrayKey(Ejs *ejs, EjsIterator *ip, int argc, EjsObj **argv)
{
EjsArray *ap;
EjsObj *vp, **data;
ap = (EjsArray*) ip->target;
if (!ejsIs(ejs, ap, Array)) {
ejsThrowReferenceError(ejs, "Wrong type");
return 0;
}
data = ap->data;
if (ap->length < ip->length) {
ip->length = ap->length;
}
for (; ip->index < ip->length; ip->index++) {
vp = data[ip->index];
assert(vp);
if (ejsIs(ejs, vp, Void)) {
continue;
}
return ejsCreateNumber(ejs, ip->index++);
}
ejsThrowStopIteration(ejs);
return 0;
}
示例8: maGetHandlerQueueData
static EjsVar *getResponseVar(void *handle, int field)
{
Ejs *ejs;
MaConn *conn;
MaResponse *resp;
conn = handle;
resp = conn->response;
ejs = ((EjsWeb*) maGetHandlerQueueData(conn))->ejs;
switch (field) {
case ES_ejs_web_Response_code:
return (EjsVar*) ejsCreateNumber(ejs, resp->code);
case ES_ejs_web_Response_filename:
return (EjsVar*) createString(ejs, resp->filename);
case ES_ejs_web_Response_headers:
return (EjsVar*) createHeaders(ejs, conn->response->headers);
case ES_ejs_web_Response_mimeType:
return (EjsVar*) createString(ejs, resp->mimeType);
default:
ejsThrowOutOfBoundsError(ejs, "Bad property slot reference");
return 0;
}
}
示例9: mprGetAllocStats
/*
* native static function get redline(): Number
*/
static EjsVar *getRedline(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv)
{
MprAlloc *alloc;
alloc = mprGetAllocStats(ejs);
return (EjsVar*) ejsCreateNumber(ejs, (int) alloc->redLine);
}
示例10: assert
EjsArray *ejsCaptureStack(Ejs *ejs, int uplevels)
{
EjsFrame *fp;
EjsState *state;
EjsArray *stack;
wchar *source;
EjsObj *frame;
char *filename;
int index, lineNumber;
assert(ejs);
stack = ejsCreateArray(ejs, 0);
index = 0;
for (state = ejs->state; state; state = state->prev) {
for (fp = state->fp; fp; fp = fp->caller) {
if (uplevels-- <= 0) {
frame = ejsCreateEmptyPot(ejs);
if (ejsGetDebugInfo(ejs, (EjsFunction*) fp, fp->pc, &filename, &lineNumber, &source) >= 0) {
ejsSetPropertyByName(ejs, frame, EN("filename"), ejsCreatePathFromAsc(ejs, filename));
ejsSetPropertyByName(ejs, frame, EN("lineno"), ejsCreateNumber(ejs, lineNumber));
ejsSetPropertyByName(ejs, frame, EN("code"), ejsCreateString(ejs, source, wlen(source)));
} else {
ejsSetPropertyByName(ejs, frame, EN("filename"), EST(undefined));
}
ejsSetPropertyByName(ejs, frame, EN("func"), fp->function.name);
ejsSetProperty(ejs, stack, index++, frame);
}
}
}
return stack;
}
示例11: uid
/*
static function get uid(): Number
*/
static EjsNumber *app_uid(Ejs *ejs, EjsObj *unused, int argc, EjsObj **argv)
{
#if ME_UNIX_LIKE
return ejsCreateNumber(ejs, getuid());
#else
return ESV(null);
#endif
}
示例12: position
/*
Get the current I/O position in the file.
function get position(): Number
*/
static EjsObj *getFilePosition(Ejs *ejs, EjsFile *fp, int argc, EjsObj **argv)
{
if (fp->file == 0) {
ejsThrowStateError(ejs, "File not opened");
return 0;
}
return (EjsObj*) ejsCreateNumber(ejs, (MprNumber) mprGetFilePosition(fp->file));
}
示例13: size
/*
Get the size of the file associated with this File object.
override function get size(): Number
*/
static EjsObj *getFileSize(Ejs *ejs, EjsFile *fp, int argc, EjsObj **argv)
{
MprPath info;
if (mprGetPathInfo(fp->path, &info) < 0) {
return (EjsObj*) ESV(minusOne);
}
return (EjsObj*) ejsCreateNumber(ejs, (MprNumber) info.size);
}
示例14: ejsCreateEmptyPot
static EjsObj *getFileOptions(Ejs *ejs, EjsFile *fp, int argc, EjsObj **argv)
{
EjsObj *options;
options = (EjsObj*) ejsCreateEmptyPot(ejs);
ejsSetPropertyByName(ejs, options, EN("mode"), ejsCreateStringFromAsc(ejs, fp->modeString));
ejsSetPropertyByName(ejs, options, EN("permissions"), ejsCreateNumber(ejs, fp->perms));
return options;
}
示例15: contentLength
/*
function get contentLength(): Number
*/
static EjsNumber *http_contentLength(Ejs *ejs, EjsHttp *hp, int argc, EjsObj **argv)
{
MprOff length;
if (!waitForResponseHeaders(hp)) {
return 0;
}
length = httpGetContentLength(hp->conn);
return ejsCreateNumber(ejs, (MprNumber) length);
}