示例#1
0
文件: array.c 项目: cgaebel/NewLang
void pcopy(Array* a)
{
    if(a->dynamic_elems)
    {
        // BUG: No OOM checking.
        size_t dynamic_bytes = a->dynamic_capacity * sizeof(Value);
        Value* new_mem = malloc(dynamic_bytes);
        memcpy(new_mem, a->dynamic_elems, dynamic_bytes);
        a->dynamic_elems = new_mem;
    }

    // Recursively call pcopy on every element of the array.
    for(size_t i = 0; i < a->static_length; ++i)
        pcopy(&a->static_elems[i]);
    for(size_t i = 0; i < a->dynamic_length; ++i)
        pcopy(&a->dynamic_elems[i]);
}
示例#2
0
文件: Frame.cpp 项目: rumkex/GPSTk
void Frame::polygon(const Polygon& polygon)
{
    Polygon pcopy(polygon);
    pcopy.translate(originX,originY);
    fixFillColor(&pcopy);
    fixStrokeStyle(&pcopy);
    display->polygon(pcopy);
}
示例#3
0
文件: rv3.c 项目: Pizookies/Radiance
static void
recolor(					/* recolor the given node */
	PNODE *p
)
{
	while (p->kid != NULL) {		/* need to propogate down */
		int  mx = (p->xmin + p->xmax) >> 1;
		int  my = (p->ymin + p->ymax) >> 1;
		int  ki;
		if (p->x >= mx)
			ki = (p->y >= my) ? UR : DR;
		else
			ki = (p->y >= my) ? UL : DL;
		pcopy(p, p->kid+ki);
		p = p->kid + ki;
	}

	(*dev->paintr)(greyscale?greyof(p->v):p->v,
			p->xmin, p->ymin, p->xmax, p->ymax);
}
示例#4
0
文件: pstring.cpp 项目: NULUSIOS/mame
void pstring_t<F>::pcopy(const mem_t *from)
{
	pcopy(from, strlen(from));
}
示例#5
0
_WCRTLINK void  __F_NAME(_splitpath2,_wsplitpath2)( CHAR_TYPE const *inp, CHAR_TYPE *outp,
                     CHAR_TYPE **drive, CHAR_TYPE **path, CHAR_TYPE **fn, CHAR_TYPE **ext ) {
/*=====================================================================*/

    CHAR_TYPE const *dotp;
    CHAR_TYPE const *fnamep;
    CHAR_TYPE const *startp;
    UINT_WC_TYPE    ch;

    /* take apart specification like -> //0/hd/user/fred/filename.ext for QNX */
    /* take apart specification like -> \\disk2\fred\filename.ext for UNC names */
    /* take apart specification like -> c:\fred\filename.ext for DOS, OS/2 */

    /* process node/drive/UNC specification */
    startp = inp;
    if( IS_PC( inp[ 0 ] ) && IS_PC( inp[ 1 ] ) )
    {
        inp += 2;
        for( ;; ) {
            if( *inp == NULLCHAR )
                break;
            if( IS_PC( *inp ) )
                break;
            if( *inp == '.' )
                break;
#if defined( __WIDECHAR__ ) || defined( __UNIX__ )
            ++inp;
#else
            inp = (char *)_mbsinc( (unsigned char *)inp );
#endif
        }
        outp = pcopy( drive, outp, startp, inp );
#if !defined(__UNIX__)
    /* process drive specification */
    } else if( inp[ 0 ] != NULLCHAR && inp[ 1 ] == ':' ) {
        if( drive != NULL ) {
            *drive = outp;
            outp[ 0 ] = inp[ 0 ];
            outp[ 1 ] = ':';
            outp[ 2 ] = NULLCHAR;
            outp += 3;
        }
        inp += 2;
#endif
    } else if( drive != NULL ) {
        *drive = outp;
        *outp = NULLCHAR;
        ++outp;
    }

    /* process /user/fred/filename.ext for QNX */
    /* process \fred\filename.ext for DOS, OS/2 */
    /* process /fred/filename.ext for DOS, OS/2 */
    dotp = NULL;
    fnamep = inp;
    startp = inp;

    for( ;; ) {
#if defined( __WIDECHAR__ ) || defined( __UNIX__ )
        ch = *inp;
#else
        ch = _mbsnextc( (unsigned char *)inp );
#endif
        if( ch == 0 )
            break;
        if( ch == '.' ) {
            dotp = inp;
            ++inp;
            continue;
        }
#if defined( __WIDECHAR__ ) || defined( __UNIX__ )
        inp++;
#else
        inp = (char *)_mbsinc( (unsigned char *)inp );
#endif
        if( IS_PC( ch ) ) {
            fnamep = inp;
            dotp = NULL;
        }
    }
    outp = pcopy( path, outp, startp, fnamep );
    if( dotp == NULL )
        dotp = inp;
    outp = pcopy( fn, outp, fnamep, dotp );
    outp = pcopy( ext, outp, dotp, inp );
}
示例#6
0
/* Runs the main program. Prints the result of the specified function. */
int main(int argc, char *argv[])
{
  
  char func=*argv[argc-1]; //The function number.
   if (argc<3 ||  argc>4)
   {
     printf("Error: Invalid number of arguments given\n");
     return 0;
   }
     
   if (toInt(argv[argc-1]) == 1) //Convert To Integer
   {
     if (argc != 3)
     {
       printf("Error: Function 1 only takes 3 arguments\n");
       return 0;
     }
     printf("%d\n",toInt(argv[argc-2]));
   }
   else if (func=='2') //Convert To float
   {
     if (argc != 3)
     {
       printf("Error: Function 2 only takes 3 arguments\n");
       return 0;
     }
     printf("%f\n",toFloat(argv[argc-2]));
   }
   else if (func=='3') //Parse string for integers
   {
     if (argc != 3)
     {
       printf("Error: Function 3 only takes 3 arguments\n");
       return 0;
     }
     parseList(argv[argc-2]);
   }
   else if (func=='4') //Covert string to upper case
   {
     if (argc != 3)
     {
       printf("Error: Function 4 only takes 3 arguments\n");
       return 0;
     }
     toUpper(argv[argc-2]);
   }
   else if (func=='5') //Convert string to lower case
   {
     if (argc != 3)
     {
       printf("Error: Function 5 only takes 3 arguments");
       return 0;
     }
     toLower(argv[argc-2]);
   }
   else if (func=='6') //Reverse a string
   {
     if (argc != 3)
     {
       printf("Error: Function 6 only takes 3 arguments\n");
     }
     printf("%s\n",reverseString(argv[argc-2]));
   }
   else if (func=='7') //Check string to see if it's a palindrome
   {
     if (argc != 3)
     {
       printf("Error: Function 7 only takes 3 arguments\n");
       return 0;
     }
     isPalindrome(argv[argc-2]);
   }
   else if (func=='8') //Reverse list of words
   {
     if (argc != 3)
     {
       printf("Error: Function 8 only takes 3 arguments\n");
       return 0;
     }
     reverseSentence(argv[argc-2]);
   }
   else if (func=='9') //Subset check
   {
     if (argc != 4)
     {
       printf("Error: Function 9 only takes 4 arguments\n");
       return 0;
     }
     contains(argv[argc-3],argv[argc-2]);
   }
   else if (toInt(argv[argc-1]) == 10) //Partial Copy
   {
     if (argc != 4)
     {
       printf("Error: Function 10 only takes 4 arguments\n");
       return 0;
     }
     pcopy(argv[argc-3],*argv[argc-2]);
   }
   else
     printf("Error: Invalid function specified. Must be between 1-10\n");

   printf("\n");







  return 0;
}