CHDK_DE Vorschauversion  Trunk Rev. 5272
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
ubasic.c-Dateireferenz
#include "camera_info.h"
#include "stdlib.h"
#include "gui.h"
#include "fileutil.h"
#include "conf.h"
#include "script_api.h"
#include "module_def.h"
#include "gui_lang.h"
+ Include-Abhängigkeitsdiagramm für ubasic.c:

gehe zum Quellcode dieser Datei

Funktionen

int ubasic_init (const char *program, int is_ptp)
 
int ubasic_run (void)
 
void ubasic_end (void)
 
void ubasic_set_variable (int varum, int value)
 
void ubasic_set_as_ret (int md_ret)
 
int jump_label (char *label)
 
static int ubasic_run_restore (void)
 
static void _set_variable (char *name, int value, int isBool, int isTable, int labelCount, const char **labels)
 
static int ubasic_init_file (char const *filename)
 
static void ubasic_script_shoot_hook_run (int hook)
 
static int module_unloader ()
 

Variablen

static char * script_source = 0
 
static char last_script [100] = ""
 
libscriptapi_sym _libubasic
 
ModuleInfo _module_info
 

Dokumentation der Funktionen

static void _set_variable ( char *  name,
int  value,
int  isBool,
int  isTable,
int  labelCount,
const char **  labels 
)
static

Definiert in Zeile 24 der Datei ubasic.c.

25 {
26  ubasic_set_variable(name[0] - (name[0]>='a'?'a':('A'-26)), value);
27 }
int jump_label ( char *  label)

Definiert in Zeile 871 der Datei ubasic.c.

872 {
873  char currLabel[MAX_STRINGLEN];
875  currLabel[0] = 0;
877  tokenizer_next();
878  if (tokenizer_token() == TOKENIZER_LABEL) {
879  tokenizer_label(currLabel, sizeof(currLabel));
880  tokenizer_next();
881  if(strcmp(label, currLabel) == 0) {
883  DEBUG_PRINTF("jump_linenum: Found line %d\n", tokenizer_line_number());
884  break;
885  }
886  }
887  }
890  DEBUG_PRINTF("Label %s not found", label);
892  }
893  return 0;
894  } else {
895  return 1;
896  }
897 }
static int module_unloader ( )
static

Definiert in Zeile 52 der Datei ubasic.c.

53 {
54  if (script_source)
55  {
57  script_source = 0;
58  }
59  return 0;
60 }
void ubasic_end ( void  )

Definiert in Zeile 2721 der Datei ubasic.c.

2721  {
2722 }
int ubasic_init ( const char *  program,
int  is_ptp 
)

Definiert in Zeile 186 der Datei ubasic.c.

187 {
188  program_ptr = program;
189  flag_yield = 0;
191  tokenizer_init(program);
192  ended = 0;
196  return 1;
197 }
static int ubasic_init_file ( char const filename)
static

Definiert in Zeile 32 der Datei ubasic.c.

33 {
34  if (strcmp(last_script, filename) != 0)
35  {
36  strcpy(last_script, filename);
37  if (script_source)
39  script_source = load_file(filename, 0, 1);
40  }
41  if (script_source)
42  {
43  return ubasic_init(script_source, 0);
44  }
45  return 0;
46 }
int ubasic_run ( void  )

Definiert in Zeile 2656 der Datei ubasic.c.

2657 {
2658  unsigned start_tick = get_tick_count();
2659  unsigned lines = 0;
2660  flag_yield = 0;
2661 
2662  do
2663  {
2664  if ( ended || tokenizer_finished() )
2665  {
2666  DEBUG_PRINTF("uBASIC program finished\n");
2667  if (ubasic_error)
2668  {
2669  // Generate error message
2670  char buf[100];
2671  const char *msg;
2673  {
2675  }
2676  else
2677  {
2679  }
2680  sprintf(buf, "uBASIC:%d %s ", ubasic_linenumber(), msg);
2681  // Show error message
2682  script_console_add_error((long)buf);
2684  return SCRIPT_RUN_ERROR;
2685  }
2686  // Show 'Finished' message
2688  return SCRIPT_RUN_ENDED;
2689  }
2690 
2691  line_statement();
2692 
2693  // Return control to CHDK only if external processing required
2694  if ( flag_yield )
2695  return SCRIPT_RUN_RUNNING;
2696 
2697  lines++;
2698  } while (lines < yield_max_lines && get_tick_count() - start_tick < yield_max_ms);
2699 
2700  return SCRIPT_RUN_RUNNING;
2701 }
static int ubasic_run_restore ( void  )
static

Definiert in Zeile 22 der Datei ubasic.c.

22 { return jump_label("restore"); }
static void ubasic_script_shoot_hook_run ( int  hook)
static

Definiert in Zeile 49 der Datei ubasic.c.

49 { return; }
void ubasic_set_as_ret ( int  md_ret)

Definiert in Zeile 2726 der Datei ubasic.c.

2727 {
2728  if (ubasic_as_ret_var_num >= 0)
2730 }
void ubasic_set_variable ( int  varum,
int  value 
)

Definiert in Zeile 2704 der Datei ubasic.c.

2705 {
2706  if(varnum >= 0 && varnum < MAX_VARNUM) {
2707  variables[varnum] = value;
2708  }
2709 }

Variablen-Dokumentation

char last_script[100] = ""
static

Definiert in Zeile 30 der Datei ubasic.c.

char* script_source = 0
static

Definiert in Zeile 29 der Datei ubasic.c.