std::string UniformGeneratorGLSLShaderBufferLoad::generateUniforms( const dp::fx::SmartParameterGroupSpec& spec ) { // TODO who decides if SBL is available for the group? bool blockShaderBufferLoad = false; for ( ParameterGroupSpec::iterator it = spec->beginParameterSpecs(); !blockShaderBufferLoad && it != spec->endParameterSpecs(); ++it ) { unsigned int parameterType = it->first.getType(); blockShaderBufferLoad |= !!(parameterType & PT_SAMPLER_TYPE_MASK); blockShaderBufferLoad |= !!(parameterType & PT_BUFFER_PTR); } if ( blockShaderBufferLoad ) { UniformGeneratorGLSLStandard generatorStandard; return generatorStandard.generateUniforms( spec ); } else { std::string structName; std::string uniformName = "uniform_" + spec->getName(); std::string stringRegion = "// ParameterGroup: " + spec->getName() + "\n"; std::string stringStruct = generateStruct(spec, structName); std::string stringDefines = generateParameterAccessors( spec, uniformName, "", "->" ); std::string stringUniform = "uniform " + structName + "* " + uniformName + ";\n"; return stringRegion + stringStruct + stringUniform + stringDefines + stringRegion + "\n"; } }
void PYGenerator::generate() { std::string fn = gOptions.output_ + gOptions.inputFS_ + ".py"; CodeFile f(fn); f.output("from bintalk import protocol_writer"); f.output("from bintalk import protocol_reader"); for(std::set<std::string>::iterator iter = gContext.imported_.begin(); iter != gContext.imported_.end(); ++iter) { std::string incFilename = *iter; incFilename = incFilename.substr(0,incFilename.find('.')); f.output("from %s import *", incFilename.c_str()); } for(size_t i = 0; i < gContext.definitions_.size(); i++) { Definition* definition = gContext.definitions_[i]; if(definition->file_ != gOptions.inputFN_) continue; if (definition->getEnum()) generateEnum(f, definition->getEnum()); else if (definition->getStruct()) generateStruct(f, definition->getStruct()); else if (definition->getService()) generateService(f, definition->getService()); } }
std::string InterfaceGenerator::generateStub(Interface & i, Info & info) { string tmp = TEMPLATE_STUB; replaceAll(tmp, "<stubname>", info.name); string stub_upper = info.name; std::transform(stub_upper.begin(), stub_upper.end(), stub_upper.begin(), ::toupper); replaceAll(tmp, "<STUBNAME>", stub_upper); { //generate procedures std::string s; for (Class::List::iterator c = i.classes.begin(); c != i.classes.end(); c++) { s.append(generateClass(*c)); } replaceAll(tmp, "<classes>", s); } { std::cout << "structs" << std::endl; //generate structs std::string s; for (Struct::Indexes::iterator c = i.structsIndexes.begin(); c != i.structsIndexes.end(); c++) { std::cout << "struct " << i.structs.at(*c).name << std::endl; s.append(generateStruct(i, i.structs.at(*c))); } replaceAll(tmp, "<structs>", s); } return tmp; }
void SP_DPCodeRender :: generateHeader( SP_DPSyntaxTree * syntaxTree, FILE * writer ) { char filename[ 128 ] = { 0 }; mNameRender->getFileName( syntaxTree->getName(), filename, sizeof( filename ) ); fprintf( writer, "/* %s.hpp\n", filename ); fprintf( writer, " Generated by spxml2struct from %s\n\n", syntaxTree->getDefineFile() ); fprintf( writer, " !!! DO NOT EDIT !!!\n\n" ); fprintf( writer, "*/\n" ); fprintf( writer, "\n" ); fprintf( writer, "#ifndef __%s_hpp__\n", filename ); fprintf( writer, "#define __%s_hpp__\n", filename ); fprintf( writer, "\n" ); fprintf( writer, "#include \"spdatapickle/spdplib.hpp\"\n" ); fprintf( writer, "\n" ); fprintf( writer, "#ifdef __cplusplus\n" ); fprintf( writer, "extern \"C\" {\n" ); fprintf( writer, "#endif\n" ); fprintf( writer, "\n" ); generateMetaEnum( syntaxTree, writer ); SP_DPSyntaxStructVector * slist = syntaxTree->getStructList(); SP_DPSyntaxStructVector::iterator sit = slist->begin(); for( ; slist->end() != sit; ++sit ) { generateStruct( &(*sit), writer ); fprintf( writer, "\n" ); } char name[ 128 ] = { 0 }; mNameRender->getStructBaseName( syntaxTree->getName(), name, sizeof( name ) ); fprintf( writer, "typedef struct tagSP_DPMetaInfo SP_DPMetaInfo_t;\n" ); fprintf( writer, "extern SP_DPMetaInfo_t * g%sMetaInfo;\n", name ); fprintf( writer, "\n" ); generatePickleDefine( syntaxTree, writer ); fprintf( writer, "\n" ); fprintf( writer, "#ifdef __cplusplus\n" ); fprintf( writer, "}\n" ); fprintf( writer, "#endif\n" ); fprintf( writer, "\n" ); fprintf( writer, "#endif\n" ); fprintf( writer, "\n" ); }
//================ //Function: int establishNewConn(int main_file_d) //Description: Handshaking for new port connection. Will recieve new connection port // number from server, attempt to connection, and send back status to server. Returns // file descriptor of new connection. //================ int establishNewConn(int main_file_d) { ssize_t readit; char buffer[10]; char connection_status[20]; bzero(buffer,10); int newPort; int newSocket = 0; int notestablished=1; struct sockaddr_in server_address; while(notestablished) //Loop through until valid connection is made { readit = recv(main_file_d,&buffer,sizeof(buffer),0); if (readit <= 0) { errorMsgExit("Unable to read message.\n\n"); } else { memset(connection_status,0,20); newPort = atoi(buffer); ////// printf("Attempt to connect to port: %i\n",newPort); newSocket = createSocket(); //Generates a new socket bzero((char *) &server_address, sizeof(server_address)); //Clears out server_address struct server_address = generateStruct(newPort); //Assigns struct variable to specified port if(connect(newSocket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) { strcpy(connection_status, "11Bad"); //Bad connection send(main_file_d,connection_status, sizeof(connection_status), 0); } else { strcpy(connection_status, "22Good"); //Good connection ////// printf("New connection established on port: %i\n",newPort); send(main_file_d,connection_status, sizeof(connection_status), 0); notestablished=0; close(main_file_d); } } } return newSocket; }
void CSGenerator::generate() { CodeFile f(gOptions.output_ + gOptions.inputFS_ + ".cs"); f.output("using System.Collections.Generic;"); for(size_t i = 0; i < gContext.definitions_.size(); i++) { Definition* definition = gContext.definitions_[i]; if(definition->file_ != gOptions.inputFN_) continue; if (definition->getEnum()) generateEnum(f, definition->getEnum()); else if (definition->getStruct()) generateStruct(f, definition->getStruct()); else if (definition->getService()) generateService(f, definition->getService()); } }
int main(int argc, char *argv[]) { int socket_file_d, port_main_running; struct sockaddr_in server_address; int new_socket; long ciphertext_size, key_file_size; //Screen for invalid number of arguments if (argc < 4) { fprintf(stderr,"Usage %s ciphertext key port\n",argv[0]); exit(1); } //LABEL FILES const char* ciphertext = argv[1]; const char* key_file = argv[2]; //ESTABLISH INITIAL CONNECTION port_main_running = atoi(argv[3]); //Assign string to integer from user input socket_file_d = createSocket(); //Generates a new socket bzero((char *) &server_address, sizeof(server_address)); //Clears out server_address struct server_address = generateStruct(port_main_running); //Assigns struct variable to specified port if(connect(socket_file_d, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) { fprintf(stderr,"Failed to connect to port: %i\n",port_main_running); exit(2); } checkCorrectServer(socket_file_d); ////// printf("Connected to main server port: %i\n",port_main_running); //ESTABLISH NEW CONNECTION new_socket = establishNewConn(socket_file_d); //WRITE Cipher text FILE ciphertext_size = writeFile(new_socket,ciphertext); ////// printf("Ciphertext file size: %li\n",ciphertext_size); //WRITE KEY FILE key_file_size = writeFile(new_socket,key_file); ////// printf("Key file size: %li\n",key_file_size); if(key_file_size < ciphertext_size) { sendFileSizeStatus(1,new_socket); close(new_socket); errorMsgExit("Client exit: Key file size must be as large as plaintext.\n"); } sendFileSizeStatus(0,new_socket); readAndOutputDec(new_socket); return 0; }
void GoGenerator::generateProgram() { generateEnum(); generateStruct(); generateService(); }