home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / M-BRIEF.ZIP / C_MACRO.C next >
C/C++ Source or Header  |  1989-02-22  |  7KB  |  320 lines

  1. /* C_MACRO.c - adds C specific macros to Msoft Editor
  2. **
  3. ** Copyright (c) 1988, Christopher Laforet
  4. ** All Rights Reserved
  5. **
  6. */
  7.  
  8. #define LINT_ARGS
  9.  
  10.  
  11. #include <stdio.h>
  12. #include "ext.h"
  13.  
  14.  
  15. #define TRUE    -1
  16. #define FALSE    0
  17.  
  18.  
  19. unsigned char far zero_length[2];
  20. LINE row;
  21. COL col;
  22. LINE hold_row;
  23. COL hold_col;
  24. PFILE cur_file;
  25. unsigned char far *cptr;
  26.  
  27.  
  28. void pascal write_string(string)
  29. unsigned char far *string;
  30.     {
  31.     cptr = string;
  32.     GetCursor(&hold_col,&hold_row);
  33.     cur_file = FileNameToHandle(zero_length,zero_length);
  34.     while (*cptr)
  35.         {
  36.         Replace(*cptr++,hold_col++,hold_row,cur_file,TRUE);
  37.         }
  38.     MoveCur(hold_col,hold_row);
  39.     }
  40.  
  41.  
  42. flagType pascal EXTERNAL if_case(argtype,argptr,metaflag)
  43. unsigned short argtype;
  44. ARG far *argptr;
  45. flagType metaflag;
  46.     {
  47.     GetCursor(&col,&row);
  48.     write_string("if ()");
  49.     fExecute("emacsnewl");
  50.     write_string("}");
  51.     fExecute("up endline emacsnewl");
  52.     write_string("{");
  53.     fExecute("emacsnewl");
  54.     MoveCur(col + 4,row);
  55.     Display();
  56.     return(TRUE);
  57.     }
  58.  
  59.  
  60. flagType pascal EXTERNAL while_case(argtype,argptr,metaflag)
  61. unsigned short argtype;
  62. ARG far *argptr;
  63. flagType metaflag;
  64.     {
  65.     GetCursor(&col,&row);
  66.     write_string("while ()");
  67.     fExecute("emacsnewl");
  68.     write_string("}");
  69.     fExecute("up endline emacsnewl");
  70.     write_string("{");
  71.     fExecute("emacsnewl");
  72.     MoveCur(col + 7,row);
  73.     Display();
  74.     return(TRUE);
  75.     }
  76.  
  77.  
  78. flagType pascal EXTERNAL switch_case(argtype,argptr,metaflag)
  79. unsigned short argtype;
  80. ARG far *argptr;
  81. flagType metaflag;
  82.     {
  83.     GetCursor(&col,&row);
  84.     write_string("switch ()");
  85.     fExecute("emacsnewl tab");
  86.     write_string("}");
  87.     fExecute("up endline emacsnewl");
  88.     write_string("{");
  89.     fExecute("emacsnewl");
  90.     write_string("default:");
  91.     fExecute("emacsnewl tab");
  92.     write_string("break;");
  93.     MoveCur(col + 8,row);
  94.     Display();
  95.     return(TRUE);
  96.     }
  97.  
  98.  
  99. flagType pascal EXTERNAL do_case(argtype,argptr,metaflag)
  100. unsigned short argtype;
  101. ARG far *argptr;
  102. flagType metaflag;
  103.     {
  104.     GetCursor(&col,&row);
  105.     write_string("do");
  106.     fExecute("emacsnewl backtab");
  107.     write_string("while ();");
  108.     fExecute("up endline emacsnewl");
  109.     write_string("}");
  110.     fExecute("up endline emacsnewl");
  111.     write_string("{");
  112.     fExecute("emacsnewl");
  113.     MoveCur(col,row + 2);
  114.     fExecute("tab");
  115.     Display();
  116.     return(TRUE);
  117.     }
  118.  
  119.  
  120. flagType pascal EXTERNAL brace_case(argtype,argptr,metaflag)
  121. unsigned short argtype;
  122. ARG far *argptr;
  123. flagType metaflag;
  124.     {
  125.     GetCursor(&col,&row);
  126.     write_string("}");
  127.     fExecute("left linsert");
  128.     write_string("{");
  129.     fExecute("emacsnewl");
  130.     MoveCur(col,row + 1);
  131.     Display();
  132.     return(TRUE);
  133.     }
  134.  
  135.  
  136. flagType pascal EXTERNAL parenthesis_case(argtype,argptr,metaflag)
  137. unsigned short argtype;
  138. ARG far *argptr;
  139. flagType metaflag;
  140.     {
  141.     GetCursor(&col,&row);
  142.     write_string("()");
  143.     MoveCur(col + 1,row);
  144.     Display();
  145.     return(TRUE);
  146.     }
  147.  
  148.  
  149. flagType pascal EXTERNAL _case_case(argtype,argptr,metaflag)
  150. unsigned short argtype;
  151. ARG far *argptr;
  152. flagType metaflag;
  153.     {
  154.     GetCursor(&col,&row);
  155.     write_string("case :");
  156.     fExecute("emacsnewl");
  157.     write_string("break;");
  158.     MoveCur(col + 5,row);
  159.     Display();
  160.     return(TRUE);
  161.     }
  162.  
  163.  
  164. flagType pascal EXTERNAL else_case(argtype,argptr,metaflag)
  165. unsigned short argtype;
  166. ARG far *argptr;
  167. flagType metaflag;
  168.     {
  169.     GetCursor(&col,&row);
  170.     write_string("else");
  171.     fExecute("endline emacsnewl");
  172.     write_string("}");
  173.     fExecute("up endline emacsnewl");
  174.     write_string("{");
  175.     fExecute("emacsnewl");
  176.     MoveCur(col,row + 2);
  177.     fExecute("tab");
  178.     Display();
  179.     return(TRUE);
  180.     }
  181.  
  182.  
  183. flagType pascal EXTERNAL for_case(argtype,argptr,metaflag)
  184. unsigned short argtype;
  185. ARG far *argptr;
  186. flagType metaflag;
  187.     {
  188.     GetCursor(&col,&row);
  189.     write_string("for ()");
  190.     fExecute("emacsnewl");
  191.     write_string("}");
  192.     fExecute("up endline emacsnewl");
  193.     write_string("{");
  194.     fExecute("emacsnewl");
  195.     MoveCur(col + 5,row);
  196.     Display();
  197.     return(TRUE);
  198.     }
  199.  
  200.  
  201. flagType pascal EXTERNAL main_case(argtype,argptr,metaflag)
  202. unsigned short argtype;
  203. ARG far *argptr;
  204. flagType metaflag;
  205.     {
  206.     fExecute("meta begline");
  207.     write_string("main(argc,argv)");
  208.     fExecute("emacsnewl meta begline");
  209.     write_string("int argc;");
  210.     fExecute("emacsnewl meta begline");
  211.     write_string("char *argv[];");
  212.     fExecute("emacsnewl meta begline tab");
  213.     write_string("}");
  214.     fExecute("up endline emacsnewl meta begline tab");
  215.     write_string("{");
  216.     fExecute("emacsnewl meta begline tab");
  217.     Display();
  218.     return(TRUE);
  219.     }
  220.  
  221.  
  222. flagType pascal EXTERNAL header_case(argtype,argptr,metaflag)
  223. unsigned short argtype;
  224. ARG far *argptr;
  225. flagType metaflag;
  226.     {
  227.     fExecute("arg mpage");
  228.     write_string("/* ");
  229.     fExecute("curfilenam curfileext emacsnewl meta begline");
  230.     write_string("**");
  231.     fExecute("emacsnewl meta begline");
  232.     write_string("** Copyright (c) ");
  233.     fExecute("curdate left left left left");
  234.     fExecute("cdelete cdelete cdelete cdelete cdelete");
  235.     fExecute("cdelete cdelete right right right right");
  236.     write_string(", ");
  237.     fExecute("curuser emacsnewl meta begline");
  238.     write_string("** All Rights Reserved");
  239.     fExecute("emacsnewl meta begline");
  240.     write_string("**");
  241.     fExecute("emacsnewl meta begline");
  242.     write_string("**");
  243.     fExecute("emacsnewl meta begline");
  244.     write_string("** Revision History:");
  245.     fExecute("emacsnewl meta begline");
  246.     write_string("**");
  247.     fExecute("emacsnewl meta begline");
  248.     write_string("** $Header$");
  249.     fExecute("emacsnewl meta begline");
  250.     write_string("**");
  251.     fExecute("emacsnewl meta begline");
  252.     write_string("*/");
  253.     fExecute("emacsnewl meta begline emacsnewl meta begline");
  254.     write_string("#define LINT_ARGS");
  255.     fExecute("emacsnewl");
  256.     MoveCur(3,0L);
  257.     Display();
  258.     return(TRUE);
  259.     }
  260.  
  261.  
  262. flagType pascal EXTERNAL include_case(argtype,argptr,metaflag)
  263. unsigned short argtype;
  264. ARG far *argptr;
  265. flagType metaflag;
  266.     {
  267.     GetCursor(&col,&row);
  268.     fExecute("meta begline");
  269.     write_string("#include <>");
  270.     fExecute("emacsnewl");
  271.     MoveCur(10,row);
  272.     Display();
  273.     return(TRUE);
  274.     }
  275.  
  276.  
  277. WhenLoaded()
  278.     {
  279.     DoMessage("C Language Macros (v 1.2) -- Copyright (c) 1988-89, Chris Laforet.");
  280.     zero_length[0] = (char)'\0';
  281.     SetKey("if_case","ctrl+i");
  282.     SetKey("while_case","ctrl+w");
  283.     SetKey("do_case","ctrl+d");
  284.     SetKey("switch_case","ctrl+s");
  285.     SetKey("brace_case","ctrl+[");
  286.     SetKey("parenthesis_case","ctrl+]");
  287.     SetKey("_case_case","ctrl+c");
  288.     SetKey("for_case","ctrl+f");
  289.     SetKey("else_case","ctrl+e");
  290.     SetKey("main_case","ctrl+m");
  291.     SetKey("header_case","ctrl+h");
  292.     SetKey("include_case","ctrl+p");
  293.     return(TRUE);
  294.     }
  295.  
  296.  
  297.  
  298. struct swiDesc swiTable[] =
  299.     {
  300.         {NULL,NULL,NULL}
  301.     };
  302.  
  303.  
  304. struct cmdDesc cmdTable[] =
  305.     {
  306.         {"if_case",if_case,NULL,NOARG},
  307.         {"while_case",while_case,NULL,NOARG},
  308.         {"do_case",do_case,NULL,NOARG},
  309.         {"switch_case",switch_case,NULL,NOARG},
  310.         {"brace_case",brace_case,NULL,NOARG},
  311.         {"parenthesis_case",parenthesis_case,NULL,NOARG},
  312.         {"_case_case",_case_case,NULL,NOARG},
  313.         {"for_case",for_case,NULL,NOARG},
  314.         {"else_case",else_case,NULL,NOARG},
  315.         {"main_case",main_case,NULL,NOARG},
  316.         {"header_case",header_case,NULL,NOARG},
  317.         {"include_case",include_case,NULL,NOARG},
  318.         {NULL,NULL,NULL,NULL}
  319.     };
  320.