| Alpes Software Homepage | Real Isam Home Page |
| Summary | Main Words | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | Other |
| Download realisam.zip File (35 KB) |
| API Function | Syntax / Example | Operation |
|---|---|---|
| Constructor realisam | db = new realisam(); | build an instance of the isam files |
| OpenEngine | rc =db->OpenEngine("example",248,"ndx","dat"); | Create or Open Isam Files |
| CloseEngine | rc=db->CloseEngine(); | Close Index and Record Files |
| SetIndexMode | rc=db->SetIndex(short Index,short Value) | Set Index to be Unique or Multi-Key |
| WriteKey | rc = db->Writekey(short Index,char *Key,int RecNumber) | Insert a Key in the index |
| GetNewRecordNumber | rc = db->GetNewRecordNumber | Get a pointer where to Write the data Record |
| WriteRecord | rc = db->WriteRecord(char pdata,int len) | Write Record |
| ReadDirectKey | rc = db->ReadDirectKey(short Index,char *Key,char *RetKey,int *RecNumber) | Get pointer on a data record with key = Key |
| ReadFirstKey | rc = db->ReadFirstKey(short Index,char *RetKey,int *RecNumber) | Pointer on First Record |
| ReadLastkey | rc = db->ReadLastKey(short Index,char *RetKey,int *RecNumber) | Ponter on last record |
| ReadNextKey | rc = db->ReadNextKey(char *RetKey,int *RecNumber) | Pointer on next record |
| ReadPrevKey | rc = db->ReadPrevKey(char *RetKey,int *RecNumber) | Pointer on previous record |
| DeleteKey | rc = db->DeleteKey(short Index, char *Key,int *RecNumber) | Delete Key in the index |
| ReadRecord | rc = db->ReadRecord(char *pdata,int RecNumber) | Read Data Record |
| DeleteRecord | rc = db->DeleteRecord(int RecNumber) | Delete Data Record |
| RewriteRecord | rc = db->RewriteRecord(char *pdata,int len,int RecNumber) | Rewrite Data Record |
| NumberOfKeys | nbkeys = db->NumberOfKeys(short Index) | Number of keys in an Index |
| RecordLength | len = db->Recordlength(int RecNumber) | Returns Record length |
| Version | rc = db->Version(char *ver) | Returns Version Number |
| GetIndexMode | mode = db->GetIndexMode(int Index) | Get Index Mode : unique or multi |
| DeleteIsam | rc = db->DeleteIsam(char *indexname,char *dataname); | Delete Index and Record Files |
| CloseReopen | rc = db->CloseReopen(char *Filename,short BlockSize, char *ndx, char *dat) | Close and Reopen Isam Files |
#ifndef __REALISAM_H
#define __REALISAM_H
#ifdef __cplusplus
extern "C" {
#endif
class _export realisam
{
public:
realisam(void);
~realisam(void);
int OpenEngine(char *FileName,short BlockSize,char *ndx, char*dat);
int CloseEngine(void);
int SetIndexMode(short Index, short Value);
int WriteRecord(char *pdata,int len);
int RewriteRecord(char *pdata,int len, int RecNumber);
int DeleteRecord(int RecNumber);
int ReadRecord(char *pdata,int RecNumber);
int GetNewRecordNumber();
int WriteKey(short Index,char *Key,int RecNumber);
int DeleteKey(short Index,char *Key,int RecNumber);
int ReadFirstKey(short Index,char *ReturnKey,int *RecNumber);
int ReadNextKey(char *ReturnKey ,int *RecNumber);
int ReadLastKey(short Index,char *ReturnKey,int *RecNumber);
int ReadPrevKey(char *ReturnKey ,int *RecNumber);
int ReadDirectKey(short Index,char *Key, char *ReturnKey, int *RecNumber);
int NumberOfKeys(short Index);
int RecordLength(int RecNumber);
int Version(char *p);
int GetIndexMode(int ndx);
int DeleteIsam(char *indexname,char *dataname);
int CloseReopen(char *FileName,short BlockSize,char *ndx, char *dat);
};
#ifdef __cplusplus
}
#endif
#endif
|
//APPLIC.H #include "realisam.h" ................... realisam *db1; realisam *db2; .................. //APPLIC.CPP // in constructor or setup ................ db1 = new realisam(); db2 = new realisam(); ................ |
//APPLIC.H #include "realisam.h" ................... realisam *db1; realisam *db2; .................. //APPLIC.CPP // constructor or setup ................ db1 = new realisam(); db2 = new realisam(); ................ // your routine .... int rc; rc = db1->OpenEngine("htmlfile",248,"ndx","dat"); // 248 + 8 => 256 ! if (!rc) { error db1 .... } rc = db2->OpenEngine("scripts",504,"ndx","dat"); // 504 + 8 ==> 512 !! if (!rc) { error db2 ... } |
//APPLIC.H #include "realisam.h" ................... realisam *db1; realisam *db2; .................. //APPLIC.CPP // constructor or setup ................ db1 = new realisam(); db2 = new realisam(); ................ // routine int rc; rc = db1->OpenEngine("htmlfile",248,"ndx","dat"); // 248 + 8 => 256 ! if (!rc) { error db1 .... } rc = db2->OpenEngine("scripts",504,,"ndx","dat"); // 504 + 8 ==> 512 !! if (!rc) { error db2 ... } // end proceesing rc = db1->CloseEngine(); rc = db2->CloseEngine(); |
//APPLIC.H #include "realisam.h" ................... realisam *db1; realisam *db2; .................. //APPLIC.CPP // constructor or setup ................ #define UNIQUE_KEYS 0 #define DUPLICATE_KEYS 1 db1 = new realisam(); db2 = new realisam(); ................ // Routine int rc; rc = db1->OpenEngine("htmlfile",248,"ndx","dat"); // 248 + 8 => 256 ! if (!rc) { error db1 .... } rc = db1->SetIndexMode(0,UNIQUE_KEYS); rc = db1->SetIndexMode(1,DUPLICATE_KEYS); rc = db2->OpenEngine("scripts",504,,"ndx","dat"); // 504 + 8 ==> 512 !! rc = db2->SetIndexMode(0,UNIQUE_KEYS); if (!rc) { error db2 ... } // End rc = db1->CloseEngine(); rc = db2->CloseEngine(); |
//APPLIC.H #include "realisam.h" ................... realisam *db1; realisam *db2; .................. //APPLIC.CPP // constructor or setup ................ #define UNIQUE 0 #define DUPLICATE 1 db1 = new realisam(); db2 = new realisam(); ................ // Routine int rc; int recdata; char key[30]; rc = db1->OpenEngine("htmlfile",248,"ndx","dat"); // 248 + 8 => 256 ! if (!rc) { error db1 .... } rc = db1->SetIndexMode(0,UNIQUE); rc = db1->SetIndexMode(1,DUPLICATE); rc = db2->OpenEngine("scripts",504,"ndx","dat"); // 504 + 8 ==> 512 !! rc = db2->SetIndexMode(0,UNIQUE); if (!rc) { error db2 ... } strcpy(key,"doc30134"); recdata = db1->GetNewRecordNumber(); rc = db1->WriteKey(0,key,recdata); // index 0 if (!rc) { error / duplicate key ... } rc = db1->WriteKey(1,"politics",recdata); // on index 1 , duplicate keys allowed ................. // End processing rc = db1->CloseEngine(); rc = db2->CloseEngine(); |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); ................ // procedure int rc; int recdata; char key[30]; rc = db1->OpenEngine("htmlfile",248,"ndx","dat"); // 248 + 8 => 256 ! if (!rc) { error db1 .... } rc = db1->SetIndexMode(0,UNIQUE_KEY); strcpy(key,"doc30134"); recdata = db1->GetNewRecordNumber(); rc = db1->WriteKey(0,key,recdata); // index 0 if (!rc) { error / duplicate key... } else { // data are stored in buffer rc = db1->WriteRecord(buffer,strlen(buffer)); .............. } ................. // end rc = db1->CloseEngine(); rc = db2->CloseEngine(); |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); ............... rc = db->OpenEngine("Applic",504,"ndx","dat"); ................ db->CloseEngine(); ....................... // procedure int rc; char RetKey[100]; int recdata; // new key to insert = "microsoft" // buffer contains the data recdata=db->GetNewRecordNumber(); rc = db->WriteKey(0,"microsoft",recdata); if (rc) // key insert ok { db->WriteRecord(buffer,strlen(buffer)+1); ....... } else ............. |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); ............... rc = db->OpenEngine("Applic",504,"ndx","dat"); ................ db->CloseEngine(); ....................... // procedure int rc; char RetKey[100]; int recdata; rc = db->ReadDirectKey(0,"microsoft",RetKey,&recdata); if (rc) // ok : key found { rc = db->ReadRecord(buffer,recdata); buffer[rc]=0; ............. } else ............ |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ............... rc = db->OpenEngine("Applic",504,"ndx","dat"); ................ db->CloseEngine(); ....................... // procedure int rc; char RetKey[100]; int recdata; rc = db->ReadFirstKey(0,RetKey,&recdata); if (rc) // key found { rc = db->ReadRecord(buffer,recdata); buffer[rc]=0; ............. } else ............ // another example : sequential reading of a file rc = db->ReadFirstKey(0,RetKey,&recdata); while (rc) { rc=db->ReadRecord(buffer,recdata); // processs the record ............................. rc=db->ReadNextKey(RetKey,&recdata); // rc = 0 if end of file (last key of index) } ................... |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); ............... rc = db->OpenEngine("Applic",504,"ndx","dat"); ................ db->CloseEngine(); ....................... // procedure int rc; char RetKey[100]; int recdata; rc = db->ReadLastKey(0,RetKey,&recdata); if (rc) // ok : key is found { rc = db->ReadRecord(buffer,recdata); buffer[rc]=0; ............. } else ............ |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); if (db) rc=db->OpenEngine("Applic",504,"ndx","dat"); ................ // end of processing db->CloseEngine(); ....................... ................. // procedure int rc, recdata; char ReturnKey[100]; // sequentiel reading of an index rc = db->ReadFirstKey(0,ReturnKey,&recdata); while (rc) { rc=db->ReadRecord(buffer,recdata); // process buffer ................ rc =db->ReadNextKey(ReturnKey,&recdata); } ................. |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); id (db) rc=db->OpenEngine("Applic",504,"ndx","dat"); ................ // end of process db->CloseEngine(); ....................... ................. // procedure int rc, recdata; char ReturnKey[100]; // example : read a file in the reverse order // buffer is supposed to be allocated rc = db->ReadLast(0,ReturnKey,&recdata); while (rc) { rc = db->ReadRecord(buffer,recdata); // process data here .................. rc=db->ReadPrevKey(ReturnKey,recdata); } |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); id (db) rc=db->OpenEngine("Applic",504,"ndx","dat"); ................ // end of procedure db->CloseEngine(); ....................... ................. // procedure int rc, recdata; char ReturnKey[100]; rc = db->ReadDirectKey(1,"microsoft",ReturnKey,&recdata); if (rc) { rc=db->DeleteKey(1,"microsoft"); rc=db->DeleteRecord(recdata); } else .............. |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ................ // procedure int rc; int recdata; char ReturnKey[100]; char *buffer; buffer = mem_alloc(10000); if (!buffer) return -1; rc = db->ReadDirectKey(0,"microsoft",ReturnKey,&recdata); if (rc) { rc=db->ReadRecord(buffer,&recdata); buffer[rc]=0; // to end with a 0x00 .......................... } else ................ |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ................ db = new realisam(); ................ // procedure int rc; int recdata; char RetKey[100]; rc = db->ReadDirectKey(0,"microsoft",RetKey,&recdata); if (rc) rc = db->DeleteRecord(&recdata); ................. |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ................ // procedure int rc; char buffer [500]; int recdata; char RetKey[100]; // read data rc = db->ReadDirectKey(0,"microbiology",RetKey,&recdata); if (rc) //ok { rc = db->ReadRecord(buffer,recdata); // rc is the record length and supposed to be less than 500 .... process data in buffer..... rc = db->RewriteRecord(buffer, strlen(buffer+1),recdata); } |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ................ // procedure int nb,rc,recdata; char Key[10]; .......... nb = db->NumberOfKeys(0); // for index 0 sprintf(Key,"%07d",nb+1000); recdata =db->GetNewRecordNumber(); rc = db->WriteKey(0,Key,recdata); if (rc) db->WriteRecord(buffer,strlen(buffer)+1); .............. |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ................ // procedure int rc,len; int recdata; char RetKey[100]; rc = db->ReadDirectKey(0,"microsoft",RetKey,&recdata); if (rc) // success { len = db->RecordLength(recdata); if (len) { buffer = malloc(len+2); .... } else { ... empty ...} } .......... |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ............... db = new realisam(); ................ // procedure char ver[20]; ............... db->Version(ver); // ver stores the string "Version x.y" (actually Version 2.3) |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ............... db = new realisam(); ................ // procedure int mode; ............... mode = db->GetIndexMode(12); ....................... |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. // procedure ............... db->DeleteIsam("c:\\samples.ndx","c:\\samples.dat"); |
//APPLIC.H #include "realisam.h" ................... realisam *db; .................. //APPLIC.CPP // constructor ............... db = new realisam(); ................ // procedure int rc; ............... rc=db->CloseReopen("Samples",248,"ndx","dat"); |