From f64c918bd65c5dcbadf4893670eb4981bb86fce2 Mon Sep 17 00:00:00 2001 From: Armando Rivera Date: Thu, 7 Nov 2013 15:37:10 -0500 Subject: [PATCH] renamed inc files, created 'jade.h' file to correspond with project name --- demo.cpp | 2 +- header.inc | 96 ++++++++++++++++++++++ jade.h | 3 + runtime.inc | 204 ++++++++++++++++++++++++++++++++++++++++++++++ sdl_test/test.cpp | 2 +- 5 files changed, 305 insertions(+), 2 deletions(-) create mode 100644 header.inc create mode 100644 jade.h create mode 100644 runtime.inc diff --git a/demo.cpp b/demo.cpp index 3257fd6..ceae027 100644 --- a/demo.cpp +++ b/demo.cpp @@ -1,5 +1,5 @@ -#include "cppbas.inc" +#include "jade.h" MAIN diff --git a/header.inc b/header.inc new file mode 100644 index 0000000..a062fd1 --- /dev/null +++ b/header.inc @@ -0,0 +1,96 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 + #include + #include +#endif +#include +#include +#include +#include +#include +#include +#include + +/* DEFINES */ +#define MAIN int main (int argc, char** argv) { +#define ENDMAIN } +#define DECLARE +#define FUNCTION +#define ENDFUNCTION } +#define DIM +#define AS +#define SUB void +#define ENDSUB } +#define BEGIN { +#define END } +#define AND && +#define OR || +#define CLASS class +#define TYPE typedef struct +#define ADDR & +#define INCR ++ +#define DECR -- +#define NEXT ++ +#define PRIOR -- +#define BYREF * +#define NOT not +#define IF if +#define THEN { +#define ELSE } else { +#define ENDIF } +#define FOR for +#define TO ; +#define STEP ; +#define SELECT switch +#define CASE case +#define _TO_ ... +#define ENDCASE break; +#define CASE_ELSE default +#define ENDSELECT } +#define WHILE while +#define WEND } +#define RETURN return +#define CONSTANT const +#define STR$( x ) dynamic_cast< std::ostringstream & >( ( std::ostringstream() << std::dec << x ) ).str() +#define BOOL bool +#define INT int +#define UINT unsigned int +#define VECTOR std::vector +#define MAP std::map +#define CHAR char +#define ENUM enum { +#define ENDENUM }; +#define EXIT exit +#define BREAK break; +#define SHORT short +#define LPCHAR char* + +#ifndef TRUE + #define TRUE 1 +#endif + +#ifndef FALSE + #define FALSE 0 +#endif + +/* TYPEDEFS */ +typedef std::string CSTRING; + + +char LF [2]= {10,0}; // Line Feed + + diff --git a/jade.h b/jade.h new file mode 100644 index 0000000..bd15518 --- /dev/null +++ b/jade.h @@ -0,0 +1,3 @@ +#include "header.inc" +#include "runtime.inc" + diff --git a/runtime.inc b/runtime.inc new file mode 100644 index 0000000..ab35f66 --- /dev/null +++ b/runtime.inc @@ -0,0 +1,204 @@ +DECLARE FUNCTION CSTRING LTRIM$ (CSTRING); +DECLARE FUNCTION CSTRING RTRIM$ (CSTRING); +DECLARE FUNCTION CSTRING TRIM$ (CSTRING); +DECLARE FUNCTION CSTRING LEFT$ (CSTRING, INT); +DECLARE FUNCTION CSTRING MID$ (CSTRING, INT, INT); +DECLARE FUNCTION CSTRING RIGHT$ (CSTRING, INT); +DECLARE FUNCTION INT INSTR (CSTRING,CSTRING,size_t=0); +DECLARE FUNCTION CSTRING LCASE$ (CSTRING); +DECLARE FUNCTION CSTRING UCASE$ (CSTRING); +DECLARE FUNCTION CSTRING MCASE$ (CSTRING); +DECLARE FUNCTION CSTRING LOADFILE$ (CSTRING); +DECLARE FUNCTION CSTRING SPLITPATH$ (CSTRING, INT); +DECLARE FUNCTION CSTRING ENC$ (CSTRING,INT=34,INT=34); +DECLARE FUNCTION CSTRING REVERSE$ (CSTRING); +DECLARE FUNCTION CSTRING REPLACE$ (CSTRING subject, CONSTANT CSTRING& search, CONSTANT CSTRING& replace); +DECLARE FUNCTION INT VAL (CSTRING); +DECLARE SUB PRINT (CSTRING); +DECLARE SUB SAVEFILE(CSTRING src, CSTRING fname); + + +FUNCTION CSTRING REVERSE$ (CSTRING src) BEGIN + RETURN CSTRING( src.rbegin(),src.rend() ); +ENDFUNCTION + +SUB PRINT (CSTRING A="") BEGIN + IF (A.empty()) THEN + std::cout << std::endl; + ELSE + std::cout << A << std::endl; + ENDIF +ENDSUB + +FUNCTION CSTRING LTRIM$ (CSTRING s) BEGIN + s.erase(s.begin(),std::find_if(s.begin(),s.end(),std::not1(std::ptr_fun(std::isspace)))); + RETURN s; +ENDFUNCTION + + +FUNCTION CSTRING RTRIM$ (CSTRING s) BEGIN + s.erase(std::find_if(s.rbegin(),s.rend(),std::not1(std::ptr_fun(std::isspace))).base(),s.end()); + RETURN s; +ENDFUNCTION + + +FUNCTION CSTRING TRIM$ (CSTRING s) BEGIN + RETURN LTRIM$ (RTRIM$ (s)); +ENDFUNCTION + + +FUNCTION CSTRING LEFT$ (CSTRING s, INT length) BEGIN + RETURN s.substr(0,length); +ENDFUNCTION + + +FUNCTION CSTRING MID$ (CSTRING s, INT start, INT length) BEGIN + RETURN s.substr(start,length); +ENDFUNCTION + + +FUNCTION CSTRING RIGHT$ (CSTRING s, INT length) BEGIN + RETURN s.substr(s.size()-length); +ENDFUNCTION + + +FUNCTION INT INSTR (CSTRING s,CSTRING match, size_t offset) BEGIN + IF (s.empty() OR match.empty() OR offset>s.length()) THEN + RETURN 0; + ENDIF + RETURN s.find(match,offset); +ENDFUNCTION + + +FUNCTION CSTRING LCASE$ (CSTRING str) BEGIN + DIM AS CSTRING name(str); + std::transform(name.begin(),name.end(),name.begin(),::tolower); + RETURN name; +ENDFUNCTION + + +FUNCTION CSTRING UCASE$ (CSTRING str) BEGIN + DIM AS CSTRING name(str); + std::transform(name.begin(),name.end(),name.begin(),::toupper); + RETURN name; +ENDFUNCTION + + +FUNCTION CSTRING MCASE$ (CSTRING S) BEGIN + DIM AS CSTRING tmpStr(S); + DIM AS bool capFlag; + DIM AS register size_t i; + + + std::transform(tmpStr.begin(),tmpStr.end(),tmpStr.begin(),::tolower); + + FOR (i=0 TO i<=tmpStr.length() STEP i++) BEGIN + IF (std::ispunct(tmpStr[i]) OR std::isspace(tmpStr[i])) THEN + capFlag=FALSE; + ENDIF + + IF (capFlag==FALSE AND std::isalpha(tmpStr[i])) THEN + tmpStr[i]=std::toupper(tmpStr[i]); + capFlag=TRUE; + ENDIF + END + RETURN tmpStr; +ENDFUNCTION + + +FUNCTION CSTRING LOADFILE$ (CSTRING N) BEGIN + DIM AS CSTRING line, tmpStr; + DIM AS std::ifstream myFile(N.c_str()); + + IF( NOT myFile.good()) BEGIN + PRINT("Error opening file"); + RETURN "ERROR"; + ENDIF + + WHILE ( NOT myFile.eof()) BEGIN + getline(myFile,line); + line+=LF; + tmpStr+=line; + WEND + + myFile.close(); + + RETURN tmpStr; + +ENDFUNCTION + +SUB SAVEFILE (CSTRING src, CSTRING fname) BEGIN + DIM AS std::ofstream outfile; + + outfile.open(fname.c_str()); + outfile << src; + outfile.close(); + +ENDSUB + +FUNCTION CSTRING SPLITPATH$ (CSTRING FPATH, INT mask) BEGIN + DIM AS CSTRING fullPath(FPATH); + DIM AS CSTRING path, filename, extension; + DIM AS CSTRING::size_type lastSlashPos, extPos; + + lastSlashPos=fullPath.find_last_of("/"); + extPos=fullPath.find_last_of("."); + IF (lastSlashPos==CSTRING::npos) THEN + path.empty(); + filename=fullPath; + ELSE + path=fullPath.substr(0,lastSlashPos); + filename=fullPath.substr(lastSlashPos+1,(extPos-lastSlashPos)-1); + ENDIF + + IF (extPos==CSTRING::npos) THEN + extension.empty(); + ELSE + extension=fullPath.substr(extPos+1,fullPath.size()-extPos-1); + ENDIF + + SELECT (mask) BEGIN + CASE 4: + RETURN path; + ENDCASE + + CASE 8: + RETURN filename; + ENDCASE + + CASE 12: + RETURN path.append("/").append(filename); + ENDCASE + + CASE 16: + RETURN extension; + ENDCASE + + CASE_ELSE: + RETURN ""; + + ENDSELECT + +ENDFUNCTION + + +FUNCTION CSTRING ENC$ (CSTRING A, INT L, INT R) BEGIN + DIM AS std::stringstream buf; + buf<<(char)L<