• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ LhsVar函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中LhsVar函数的典型用法代码示例。如果您正苦于以下问题:C++ LhsVar函数的具体用法?C++ LhsVar怎么用?C++ LhsVar使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了LhsVar函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: CheckInputArgument

int ScilabGateway::exists(char * fname, const int envId, void * pvApiCtx)
{
    SciErr err;
    int * addr = 0;
    int * id = 0;
    int row = 0;
    int col = 0;
    bool exists = false;

    CheckInputArgument(pvApiCtx, 1, 1);
    CheckOutputArgument(pvApiCtx, 1, 1);

    ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
    ScilabGatewayOptions & options = env.getGatewayOptions();
    OptionsHelper::setCopyOccured(false);
    ScilabObjects::initialization(env, pvApiCtx);
    options.setIsNew(false);

    err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
    if (err.iErr)
    {
        throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
    }

    if (!ScilabObjects::isExternalObjOrClass(addr, pvApiCtx))
    {
        throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Wrong type for input argument #%d: An External Object expected."), 1);
        return 0;
    }

    err = getMatrixOfInteger32InList(pvApiCtx, addr, EXTERNAL_OBJ_ID_POSITION, &row, &col, &id);
    if (err.iErr)
    {
        throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
    }

    try
    {
        exists = env.isvalidobject(*id);
    }
    catch (std::exception & e)
    {
        throw;
    }

    createScalarBoolean(pvApiCtx, 1, exists ? 1 : 0);

    LhsVar(1) = 1;
    PutLhsVar();

    return 0;
}
开发者ID:LenRemmerswaal,项目名称:scilab,代码行数:52,代码来源:exists.cpp


示例2: setStacksizeMax

/*--------------------------------------------------------------------------*/
static int setStacksizeMax(char *fname)
{
    /* we backup previous size */
    unsigned long backupSize = getCurrentStacksize();

    /* Bug 5495 on Windows 2000 -- WONT FIX GetLargestFreeMemoryRegion */
    /* it works on XP, Vista, S7ven */
    /* GetLargestFreeMemoryRegion() returns a superior size to real value */
    unsigned long maxmemfree = (GetLargestFreeMemoryRegion()) / sizeof(double);

    /* We have already max */
    if (maxmemfree <= backupSize)
    {
        LhsVar(1) = 0;
        C2F(putlhsvar) ();
        return 0;
    }

    /* we do a stacksize('min') */
    if (setStacksizeMin(fname) == 0)
    {
        unsigned long memmaxavailablebyscilab = get_max_memory_for_scilab_stack();
        unsigned long newMemSizeMax = maxmemfree;
        int errCode;

        if (memmaxavailablebyscilab < newMemSizeMax)
        {
            newMemSizeMax = memmaxavailablebyscilab;
        }

        if (newMemSizeMax < MIN_STACKSIZE)
        {
            newMemSizeMax = MIN_STACKSIZE;
        }

        errCode = setStacksize(newMemSizeMax);
        if (errCode != 0)
        {
            setStacksize(backupSize);
            Scierror(10001, _("%s: Cannot allocate memory.\n%s\n"), fname, getStackCreationErrorMessage(errCode));
        }
        return 0;
    }
    else
    {
        /* stacksize('min') fails */
        /* restore previous size */
        setStacksize(backupSize);
        Scierror(10001, _("%s: Cannot allocate memory.\n"), fname);
    }
    return 0;
}
开发者ID:ZhanlinWang,项目名称:scilab,代码行数:53,代码来源:sci_stacksize.c


示例3: sci_stacksizeMin

/*--------------------------------------------------------------------------*/
static int sci_stacksizeMin(char *fname)
{
    if (setStacksizeMin(fname) == 0)
    {
        LhsVar(1) = 0;
        PutLhsVar();
    }
    else
    {
        Scierror(10001, _("%s: Cannot allocate memory.\n"), fname);
    }
    return 0;
}
开发者ID:ASP1234,项目名称:Scilabv5.5.2,代码行数:14,代码来源:sci_stacksize.c


示例4: C2F

/*--------------------------------------------------------------------------*/
int C2F(sci_banner)(char *fname,unsigned long fname_len)
{
	Rhs=Max(Rhs,0);
	CheckRhs(0,0) ;
	CheckLhs(0,1) ;

	banner();

	LhsVar(1) = 0;
	PutLhsVar();	

	return 0;
}
开发者ID:rossdrummond,项目名称:scilab,代码行数:14,代码来源:sci_banner.c


示例5: C2F

/*--------------------------------------------------------------------------*/
int C2F(sci_what)(char *fname, unsigned long fname_len)
{
    int sizecommandwords = 0;
    char **commandwords = getcommandkeywords(&sizecommandwords);

    Rhs = Max(0, Rhs);
    CheckRhs(0, 0);
    CheckLhs(1, 2);

    CreateLocalFunctionsTab();
    qsort( LocalFunctionsTab , SizeLocalFunctionsTab ,  sizeof (char *)  , cmpfunctionnames);

    if (Lhs == 1)
    {
        DispInternalFunctions();
        DispCommands();
        LhsVar(1) = 0;
    }
    else /* Lhs == 2 */
    {
        int ncol = 1;
        int nrowFunctions = SizeLocalFunctionsTab;
        int nrowCommands = sizecommandwords;

        CreateVarFromPtr(Rhs + 1, MATRIX_OF_STRING_DATATYPE, &nrowFunctions, &ncol, LocalFunctionsTab);
        LhsVar(1) = Rhs + 1;

        CreateVarFromPtr(Rhs + 2, MATRIX_OF_STRING_DATATYPE, &nrowCommands, &ncol, commandwords);
        LhsVar(2) = Rhs + 2;

        freeArrayOfString(LocalFunctionsTab, nrowFunctions);
        freeArrayOfString(commandwords, nrowCommands);

    }

    PutLhsVar();
    return 0;
}
开发者ID:quanpan302,项目名称:scilab,代码行数:39,代码来源:sci_what.c


示例6: sci_oemtochar

/*--------------------------------------------------------------------------*/
int sci_oemtochar(char *fname, unsigned long l)
{
    int l1 = 0, n1 = 0, m1 = 0;
    char *Output = NULL;

    if (getWarningMode())
    {
        sciprint(_("%s: Feature %s is obsolete.\n"), _("Warning"), fname);
        sciprint(_("%s: This feature will be permanently removed in Scilab %s\n\n"), _("Warning"), "5.4.1");
    }

    CheckRhs(1, 1);
    CheckLhs(0, 1);

    if (GetType(1) == sci_strings)
    {
        char *OEMstring = NULL;

        GetRhsVar(1, STRING_DATATYPE, &m1, &n1, &l1);
        OEMstring = cstk(l1);

        Output = (char*)MALLOC((strlen(OEMstring) + 1) * sizeof(char));
        if (getScilabMode() == SCILAB_STD)
        {
            OemToChar(OEMstring, Output);
        }
        else
        {
            wsprintf(Output, "%s", OEMstring);
        }
    }
    else
    {
        Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), fname, 1);
        return 0;
    }

    n1 = 1;
    m1 = (int)strlen(Output);
    CreateVarFromPtr(Rhs + 1, STRING_DATATYPE, &m1, &n1, &Output);
    if (Output)
    {
        FREE(Output);
        Output = NULL;
    }

    LhsVar(1) = Rhs + 1;
    PutLhsVar();
    return 0;
}
开发者ID:LenRemmerswaal,项目名称:scilab,代码行数:51,代码来源:sci_oemtochar.c


示例7: LhsVar

int ScilabGateway::remove(char * fname, const int envId, void * pvApiCtx)
{
    SciErr err;
    int * addr = 0;

    ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
    ScilabGatewayOptions & options = env.getGatewayOptions();
    OptionsHelper::setCopyOccured(false);
    ScilabObjects::initialization(env, pvApiCtx);
    options.setIsNew(false);

    if (Rhs == 0)
    {
        env.garbagecollect();

        LhsVar(1) = 0;
        PutLhsVar();

        return 0;
    }

    for (int i = 1; i <= Rhs; i++)
    {
        err = getVarAddressFromPosition(pvApiCtx, i, &addr);
        if (err.iErr)
        {
            throw ScilabAbstractEnvironmentException(__LINE__, __FILE__, gettext("Invalid variable: cannot retrieve the data"));
        }

        ScilabObjects::removeVar(addr, pvApiCtx);
    }

    LhsVar(1) = 0;
    PutLhsVar();

    return 0;
}
开发者ID:LenRemmerswaal,项目名称:scilab,代码行数:37,代码来源:remove.cpp


示例8: sci_xinit

/*--------------------------------------------------------------------------*/
int sci_xinit(char * fname, void *pvApiCtx)
{
    SciErr err;
    int * addr = 0;
    char * path = 0;
    char * realPath = 0;

    CheckInputArgument(pvApiCtx, 1, 1);

    err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
    if (err.iErr)
    {
        printError(&err, 0);
        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
        return 0;
    }

    if (!isStringType(pvApiCtx, addr) || !checkVarDimension(pvApiCtx, addr, 1, 1))
    {
        Scierror(999, gettext("%s: Wrong type for input argument #%d: string expected.\n"), fname, 1);
        return 0;
    }

    if (getAllocatedSingleString(pvApiCtx, addr, &path) != 0)
    {
        Scierror(999, _("%s: No more memory.\n"), fname);
        return 0;
    }

    realPath = expandPathVariable(path);

    if (realPath)
    {
        org_scilab_modules_graphic_export::Driver::setPath(getScilabJavaVM(), realPath);
        FREE(realPath);
    }
    else
    {
        Scierror(999, _("%s: Invalid path: %s.\n"), fname, path);
        return 0;
    }

    freeAllocatedSingleString(path);

    LhsVar(1) = 0;
    PutLhsVar();

    return 0;
}
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:50,代码来源:sci_xinit.cpp


示例9: sci_mtell

/*--------------------------------------------------------------------------*/
int sci_mtell(char *fname, unsigned long fname_len)
{
    int m1 = 0, n1 = 0, l1 = 0;
    int one = 1;
    int l2 = 0, err = 0;
    int fd = ALL_FILES_DESCRIPTOR;

    Nbvars = 0;
    CheckRhs(0, 1);
    CheckLhs(1, 1);

    /*  checking variable file */
    if ( Rhs >= 1)
    {
        if (GetType(1) == sci_matrix)
        {
            GetRhsVar(1, MATRIX_OF_INTEGER_DATATYPE, &m1, &n1, &l1);
            if (m1*n1 == 1)
            {
                fd = *istk(l1);
            }
            else
            {
                Scierror(999, _("%s: Wrong size for input argument #%d: An integer expected.\n"), fname, 1);
                return 0;
            }
        }
        else
        {
            Scierror(999, _("%s: Wrong type for input argument #%d: An integer expected.\n"), fname, 1);
            return 0;
        }
    }

    CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &one, &one, &l2);

    C2F(mtell)(&fd, stk(l2), &err);

    if (err >  0)
    {
        SciError(10000);
        return 0;
    }

    LhsVar(1) = Rhs + 1;
    PutLhsVar();

    return 0;
}
开发者ID:ZhanlinWang,项目名称:scilab,代码行数:50,代码来源:sci_mtell.c


示例10: C2F

/*--------------------------------------------------------------------------*/
int C2F(sci_getlanguagealias)(char *fname, unsigned long fname_len)
{
    static int l1, n1, m1;
    char *Output = NULL;

    CheckRhs(0, 0);
    CheckLhs(0, 1);

    Output = getlanguagealias();

    if (Output)
    {
        n1 = 1;
        CreateVarFromPtr( Rhs + 1, STRING_DATATYPE, (m1 = (int)strlen(Output), &m1), &n1, &Output);
        LhsVar(1) = Rhs + 1;
        PutLhsVar();;
        if (Output)
        {
            FREE(Output);
            Output = NULL;
        }
    }
    else
    {
        m1 = 0;
        n1 = 0;
        l1 = 0;
        CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE,  &m1, &n1, &l1);
        LhsVar(1) = Rhs + 1;
        PutLhsVar();;
        return 0;
    }


    return 0;
}
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:37,代码来源:sci_getlanguagealias.c


示例11: sci_view

int sci_view(char *fname) 
{
  static int l1, m1, n1, l2, m2, n2, m3, n3, l3;
  static int minlhs=1, maxlhs=3, minrhs=3, maxrhs=3;

  /* Check number of inputs (rhs=3) and outputs (lhs=3) */
  CheckRhs(minrhs,maxrhs) ;
  CheckLhs(minlhs,maxlhs) ;

  /* Get X (1 ,double), Y (2, int) and  C (3, string) */
  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
  GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);
  GetRhsVar(3,STRING_DATATYPE, &m3, &n3, &l3);

  /* Call display function
     stk(l1)->X (double), istk(l2)->Y (int), cstk(l3)->Z  (char)    */
  displ(stk(l1), m1, n1, istk(l2), m2, n2, cstk(l3), m3, n3);

  /*  Return variables  */
  LhsVar(1) = 1;
  LhsVar(2) = 2;
  LhsVar(3) = 3;
  return 0;
}
开发者ID:rossdrummond,项目名称:scilab,代码行数:24,代码来源:sci_view.c


示例12: sci_xpause

/*--------------------------------------------------------------------------*/
int sci_xpause(char *fname, unsigned long fname_len)
{
    int m1 = 0, n1 = 0, l1 = 0, sec = 0;

    CheckLhs(0, 1);
    CheckRhs(1, 1);
    if (Rhs == 1)
    {
        GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
        CheckScalar(1, m1, n1);
        sec = (int)  * stk(l1);
        if (sec <= 0)
        {
            Scierror(999, _("%s: Wrong values for input argument #%d: Non-negative integers expected.\n"), fname, 1);
            return 0;
        }

#ifdef _MSC_VER
        {
            int ms = (sec) / 1000; /** time is specified in milliseconds in scilab**/
            if (ms > 0)
            {
                Sleep(ms);    /* Number of milliseconds to sleep. */
            }
        }
#else
        {
            unsigned useconds;
            useconds = (unsigned) sec;
            if (useconds != 0)
#ifdef HAVE_USLEEP
            {
                usleep(useconds);
            }
#else
#ifdef HAVE_SLEEP
            {
                sleep(useconds);
            }
#endif
#endif
        }
#endif
    }
    LhsVar(1) = 0;
    PutLhsVar();
    return 0;
}
开发者ID:ASP1234,项目名称:Scilabv5.5.2,代码行数:49,代码来源:sci_xpause.c


示例13: sci_tohome

/*--------------------------------------------------------------------------*/
int sci_tohome(char *fname, void* pvApiCtx)
{

    CheckRhs(0, 0);
    CheckLhs(0, 1);

    if (!tohome())
    {
        sciprint(_("%s: This feature has not been implemented in this mode.\n"), fname);
    }

    LhsVar(1) = 0;
    PutLhsVar();

    return 0 ;
}
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:17,代码来源:sci_tohome.c


示例14: sci_bug_9708

int sci_bug_9708(char *fname)
{
  SciErr sciErr;
  const char varname[] = "iputhereavariabletoolongforscilabandthereisnoerror";
  
  sciErr = createNamedMatrixOfString(pvApiCtx, varname, 1, 1, &varname);
  if(sciErr.iErr)
  {
    printError(&sciErr, 0);
    Scierror(999, _("%s: Invalid variable name.\n"), fname);
    return 0;
  }

  LhsVar(1) = 1;
  return 0;
}
开发者ID:rossdrummond,项目名称:scilab,代码行数:16,代码来源:bug_9708.c


示例15: sci_getfilepartlevel

/*--------------------------------------------------------------------------*/
int sci_getfilepartlevel(char *fname, unsigned long fname_len)
{
    CheckRhs(1, 1);
    CheckLhs(1, 1);

    if (GetType(1) == sci_strings)
    {
        int m = 0, n = 0;
        char **InputString = NULL;

        GetRhsVar(1, MATRIX_OF_STRING_DATATYPE, &m, &n, &InputString);
        if ( (m == 1) && (n == 1) )
        {
            char *result = NULL;
            result = getFilePartLevel(InputString[0]);
            if (result == NULL)
            {
                int l = 0;
                m = 0, n = 0;
                CreateVar(Rhs + 1, STRING_DATATYPE,  &m, &n, &l);
            }
            else
            {
                n = 1;
                CreateVarFromPtr(Rhs + 1, STRING_DATATYPE, (m = (int)strlen(result), &m), &n, &result);
                if (result)
                {
                    FREE(result);
                    result = NULL;
                }
            }

            LhsVar(1) = Rhs + 1;
        }
        else
        {
            freeArrayOfString(InputString, m * n);
            Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, 1);
        }
    }
    else
    {
        Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
    }

    return 0;
}
开发者ID:ZhanlinWang,项目名称:scilab,代码行数:48,代码来源:sci_getfilepartlevel.c


示例16: C2F

/*--------------------------------------------------------------------------*/ 
int C2F(sci_getlanguagestable)(char *fname,unsigned long fname_len)
{
	static int n1,m1;
	char **Output=NULL;

	int i=0;

	CheckRhs(0,0);
	CheckLhs(0,1);

	Output=(char**)MALLOC(sizeof(char*)*2* NumberLanguages);
	
	for (i=0;i<NumberLanguages;i++)
	{
		char *alphacode=NULL;
		char *language=NULL;

		alphacode=(char*)MALLOC((strlen(LANGUAGE_COUNTRY_TAB[i].alphacode)+1)*sizeof(char));
		strcpy(alphacode,LANGUAGE_COUNTRY_TAB[i].alphacode);

		language=(char*)MALLOC((strlen(LANGUAGE_COUNTRY_TAB[i].languagedescription)+1)*sizeof(char));
		strcpy(language,LANGUAGE_COUNTRY_TAB[i].languagedescription);

		Output[i]=alphacode;
		Output[NumberLanguages+i]=language;

	}
	
	m1=NumberLanguages;
	n1=2;
	CreateVarFromPtr( Rhs+1,MATRIX_OF_STRING_DATATYPE,&m1,&n1,Output);
	LhsVar(1) = Rhs+1;
	PutLhsVar();;	

	if (Output) 
	{
		for (i=0;i<NumberLanguages;i++)
		{
			FREE(Output[i]);
			Output[i]=NULL;
			FREE(Output[NumberLanguages+i]);
			Output[NumberLanguages+i]=NULL;
		}
	}

	return 0;
}
开发者ID:rossdrummond,项目名称:scilab,代码行数:48,代码来源:sci_getlanguagestable.c


示例17: CheckInputArgument

int ScilabGateway::getClasspath(char * fname, const int envId, void * pvApiCtx)
{
    CheckInputArgument(pvApiCtx, 0, 0);

    ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
    ScilabGatewayOptions & options = env.getGatewayOptions();
    OptionsHelper::setCopyOccurred(false);
    ScilabObjects::initialization(env, pvApiCtx);
    options.setIsNew(false);

    env.getclasspath(ScilabStringStackAllocator(pvApiCtx, Rhs + 1));

    LhsVar(1) = Rhs + 1;
    PutLhsVar();

    return 0;
}
开发者ID:ASP1234,项目名称:Scilabv5.5.2,代码行数:17,代码来源:getClasspath.cpp


示例18: sip_set_verbose_int

/*
 * sets SIP verbosity level
 * TODO
 *    - even in quiet mode, all function should output useful 
 *    info/debug/error codes in a global variable (sip_ans_msg)
 */
SipExport int
sip_set_verbose_int(char *fname)
{
   int rname,cname,pname,
       rout,cout,
       minlhs=1, maxlhs=1, minrhs=0, maxrhs=1;

   char *prev;

   CheckRhs(minrhs,maxrhs);
   CheckLhs(minlhs,maxlhs);

   /* print previous value */
   switch (sip_verbose) {
      case SIP_WORDY:
         prev = "wordy";
         break;
      case SIP_QUIET:
         prev = "quiet";
         break;
      default:
         sip_error("BUG: internal variable has invalid value (please report)");
         break;
   }

   cout = 1;
   rout = strlen(prev);
   CreateVarFromPtr(2, "c", &rout, &cout, &prev);

   
   if (Rhs == 0) 
      /* toggle previous value */
      sip_verbose = (sip_verbose == SIP_QUIET) ? SIP_WORDY : SIP_QUIET;
   else { 
      /* set new value */
      GetRhsVar(1, "c", &rname, &cname, &pname); 
      if (cname == 1 && *cstk(pname) == 'q')
         sip_verbose = SIP_QUIET;
      else
         sip_verbose = SIP_WORDY;
   }

   LhsVar(1)=2;
   
   return true;
}
开发者ID:madhavan902,项目名称:siptoolbox,代码行数:52,代码来源:misc_int.c


示例19: NdofInterface

int NdofInterface(char *fname)
{
    static int un = 1, nddl;

    /*    Define minls=1,  maxlhs   */
    static int minlhs = 1,  maxlhs = 1;

    /*   Check lhs   */
    CheckLhs(minlhs, maxlhs) ;

    CreateVar(1, "d", &un, &un, &nddl);

    Ndof(istk(nddl));

    LhsVar(1) = 1;
    return 0;
}
开发者ID:radarsat1,项目名称:siconos,代码行数:17,代码来源:ScilabInterface.c


示例20: introundmode

int
introundmode (char *fname)
{
  int direct;
  int t, u, v;

  CheckRhs (1, 1);
  CheckLhs (1, 1);
  
  GetRhsVar (1, "i", &t, &u, &direct);
  CreateVar (2, "i", &t, &u, &v);
  
  *istk (v) = roundmode(istk (direct)); 
  
  LhsVar (1) = 2;
  
  return 0;
}
开发者ID:Int4Sci,项目名称:Int4Sci-v2,代码行数:18,代码来源:intoperator.c



注:本文中的LhsVar函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ LibAmdMemFill函数代码示例发布时间:2022-05-30
下一篇:
C++ LfgUpdateData函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap