Submit
Path:
~
/
/
usr
/
share
/
doc
/
libbit-vector-perl
/
examples
/
File Content:
test.c
/*****************************************************************************/ /* */ /* Copyright (c) 2002 - 2013 by Steffen Beyer. */ /* All rights reserved. */ /* */ /* This program is free software; you can redistribute it */ /* and/or modify it under the same terms as Perl itself. */ /* */ /*****************************************************************************/ /******************************************************/ /* */ /* Example for using the BitVector.c library from C */ /* */ /* (Just for playing around; also shows how one can */ /* deal with error handling) */ /* */ /* Copy ToolBox.h, BitVector.h and BitVector.o to */ /* this directory, then compile this file and link */ /* with BitVector.o, e.g. with */ /* */ /* gcc -o test test.c BitVector.o */ /* */ /******************************************************/ #include <stdio.h> #include "ToolBox.h" #include "BitVector.h" void ListErrCode(ErrCode code) { if (code) fprintf(stdout, "BitVector ErrCode %2d: %s\n", code, BitVector_Error(code)); } void PrintErrorMessage(ErrCode code, char *name) { if (code) fprintf(stdout, "Bit::Vector::%s(): %s\n", name, BitVector_Error(code)); } #define FATAL_ERROR(name,code) \ { fprintf(stderr, "Bit::Vector::" name "(): %s\n", BitVector_Error(code)); exit(code); } int main(void) { N_int bits = 5; // N_char x[] = "001010"; /* 10 */ N_char x[] = "001x10"; /* 10 */ // N_char y[] = "000100"; /* 4 */ // N_char y[] = "000111"; /* 7 */ N_char y[] = "001111"; /* 63 */ wordptr X; wordptr Y; wordptr Z; ErrCode err; boolean ovrflw; boolean carry = false; ListErrCode( 0); ListErrCode( 1); ListErrCode( 2); ListErrCode( 3); ListErrCode( 4); ListErrCode( 5); ListErrCode( 6); ListErrCode( 7); ListErrCode( 8); ListErrCode( 9); ListErrCode(10); ListErrCode(11); ListErrCode(12); ListErrCode(13); ListErrCode(14); ListErrCode(15); ListErrCode(16); ListErrCode(17); ListErrCode(18); ListErrCode(19); ListErrCode(20); err = BitVector_Boot(); if (err) FATAL_ERROR("Boot", err); printf("Number of bits in a WORD: %d\n", BitVector_Word_Bits()); printf("Number of bits in a LONG: %d\n", BitVector_Long_Bits()); X = BitVector_Create(bits, 1); if (X == NULL) FATAL_ERROR("Create", ErrCode_Null); err = BitVector_from_Bin(X, x); PrintErrorMessage(err,"from_Bin"); Y = BitVector_Create(bits, 1); if (Y == NULL) FATAL_ERROR("Create", ErrCode_Null); err = BitVector_from_Bin(Y, y); PrintErrorMessage(err,"from_Bin"); Z = BitVector_Create(bits, 1); if (Z == NULL) FATAL_ERROR("Create", ErrCode_Null); ovrflw = BitVector_add(Z, X, Y, &carry); printf("result of %s + %s is %s (carry = %d, overflow = %d)\n", BitVector_to_Dec(X), /* Beware of the memory leaks here! */ BitVector_to_Dec(Y), /* Should call "BitVector_Dispose()" */ BitVector_to_Dec(Z), /* on these strings after use! */ carry, ovrflw); err = BitVector_Multiply(Z, X, Y); printf("result of %s * %s is %s\n", BitVector_to_Dec(X), /* Beware of the memory leaks here! */ BitVector_to_Dec(Y), /* Should call "BitVector_Dispose()" */ BitVector_to_Dec(Z)); /* on these strings after use! */ PrintErrorMessage(err,"Multiply"); return(0); }
Submit
FILE
FOLDER
Name
Size
Permission
Action
SetObject.pl.gz
1180 bytes
0644
benchmk1.pl
461 bytes
0755
benchmk2.pl
673 bytes
0755
benchmk3.pl
1059 bytes
0755
primes.pl
2632 bytes
0755
test.c
4083 bytes
0644
N4ST4R_ID | Naxtarrr